2012-01-18 2 views
1

私は、バックエンドSQLiteでは整数として表現されていますが、Nhibernateマッピングではブール値の解釈があります。私は自分のHQLクエリが '本当の'行の数を取得するようにしたい。 SQLでは、それは "SUM(BoolColumn)"として正常に動作しますが、HQLは戻り値をboolに変換します。私は真と偽の両方の行を含むselectにいくつかの他のCOUNT(DISTINCT)列を持っているので、where節を使うことはできません。HQL(Hibernate)でboolean型の列を合計するにはどうすればよいですか?

答えて

7

NHが、それはあなたがHQLにこのような何かを行うことができるかもしれない(集約することはできません)ビットだと思っているので...

sum(case when BoolColumn = 1 then 1 else 0 end)

あなたがにint型からカスタムマッピングを定義しましたあなたはintが1または0になると仮定していますか?

+0

CASE構文が働いていました。カスタムマッピングはありません。 POCOプロパティはboolであり、SQLiteの値は常に1または0です。ありがとうございます。 –

+0

cool!私は、値が1または0でない場合、NHが例外をスローすると思います... – dotjoe

0

これが私の作品:

sum(case when BoolColumn = true then 1 else 0 end) 
関連する問題