2011-01-07 7 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 exampleSELECT SUM(...)クエリを実装します。あなたの問題にかなり近づきます。 SUM(col1 * col2)表現と元のポスターのための作業例が含まれて


Here's another forum topicは、前の例外を除いて似問題を抱えていました。

+0

私は ".setProjection(Projections.sum(amount" direction "))))")を試しましたが、例外 "org.hibernate.QueryException:プロパティを解決できませんでした:amount * direction ...." – panagdu

6

私はあなたが必要と思うのはフォーミュラだと思います。このようなもの

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

    @Column("AMOUNT") 
    private double amount; 

    @Column("DIRECTION") 
    private double direction; 

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

} 

そして、プロジェクションリストに乗算列を追加します。