2017-02-06 6 views
0

CBの新機能、ネイティブクエリの代わりに使用しようとしています。その理由は、状況によって異なるグループ分けが必要になるからです。 は、ここに私は再現するために必要なものです:クライテリアビルダ文字列ベース - 式引用符をダブルとして使用 - JPA

(1 - sum(field_1 [integer])::real/sum (field_2 [integer])::real ) * 100 

はここでそれをすると仮定したコードです:

Expression<Double> filed1Sum = cb.sumAsDouble(report.<Float>get("field1")); 
Expression<Double> filed2Sum = cb.sumAsDouble(report.<Float>get("field2")); 
Expression<Double> expected = cb.toDouble(cb.<Float>quot(filed1Sum, filed2Sum)); 

問題がある:期待値は限り来ています!フィールド1はフィールド2よりも小さいので、私は0(ゼロ)を持っています。私はそのような何か0.888を得るのだろうかと思っています。

+0

あなたはタイトルに基づいて_stringに基づいていますか? 'field1'と' field2'はjavaフィールドの数値ですか? – perissf

+0

1 - Metamodelベースのget(_ Class)とは対照的に、-Stringベースのget( "String")。 –

+0

2 - もちろんではありません。それらはJavaのINTEGERデータベースフィールドではありません –

答えて

1

私は1.0Dで配当金を掛けることで解決しました:正しく浮動小数点を返し

​​

:クエリを生成

Expression<Number> expected = cb.quot(cb.prod(filed1Sum,cb.literal(1.0D)), filed2Sum); 

を。 明示的な変換は必要ありませんでした。

私を助けてくれてありがとう

関連する問題