2011-01-07 2 views

답변

14

대답을 찾았습니다. Projection.sql()을 사용하지 말고 Projection.sqlProjection()을 사용해야합니다. 예 :

.setProjection(Projections.sqlProjection("sum(cast(amount as signed)* direction) as amntDir", new String[] {"amntDir"} , new Type[] {Hibernate.DOUBLE})); 
+2

Can 당신은 당신의 대답을 개발합니까? - 초기 쿼리는 무엇입니까? createQuery ("....") - 결과가 어디에 저장됩니까? (amntDir에?) - 어떻게 결과를 사용합니까? –

1

투영은 하이브 네이트 기준으로 집계 함수를 사용하는 핵심어입니다. 쿼리를 구현하기위한

roseindia has a short example 당신의 문제에 꽤 가깝게 보입니다. SUM(col1 * col2) 표현과 원래의 포스터 작업 예제를 포함


Here's another forum topic 전에 예외를 제외하고 비슷한 문제가 있었다.

+0

".setProjection (Projections.sum (("amount * direction "))))")을 시도했지만 "org.hibernate.QueryException : 속성을 확인할 수 없습니다 : 양 * 방향 ...." – panagdu

6

필요한 것은 수식이라고 생각합니다. 이런 식으로

@Entity 
@Table('TRANSACTIONS') 
Class transactions { 

    @Column("AMOUNT") 
    private double amount; 

    @Column("DIRECTION") 
    private double direction; 

    @Formula("AMOUNT * DIRECTION") 
    private double multiplication; 

} 

투영 목록에 곱셈 열을 추가하십시오.