2012-01-18 2 views
1

У меня есть столбец, представленный как целые числа в backend SQLite, но с булевой интерпретацией в Nhibernate-сопоставлении. Я хочу, чтобы мой запрос HQL получил количество строк «true». В SQL он отлично работает как «SUM (BoolColumn)», но HQL возвращает возвращаемое значение в bool. Я не могу использовать предложение where, потому что у меня есть другие столбцы COUNT (DISTINCT) в select, которые включают в себя как истинные, так и ложные строки.Как я могу суммировать булевский столбец в HQL (NHibernate)?

ответ

7

Поскольку NH считает, что это немного (не могут быть объединены), вы можете быть в состоянии сделать что-то подобное в HQL ...

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

ли вы определить пользовательское отображение из INT в bool или вы предполагаете, что int будет только 1 или 0?

+0

Синтаксис СЛУЧАЙ работал. Нет настраиваемого сопоставления; свойство POCO - это bool, а значения SQLite всегда равны 1 или 0. Спасибо. –

+0

круто! Я думаю, что NH будет генерировать исключение, если значения не равны 1 или 0, тогда ... – dotjoe

0

Это работает для меня:

sum(case when BoolColumn = true then 1 else 0 end) 
Смежные вопросы