Как получить сумму (логическое) как целое число в запросе критериев гибернации? - PullRequest
1 голос
/ 29 ноября 2010

В простом сценарии «голосуй вверх / голосуй вниз» я хочу суммировать общее количество голосов «вверх».

criteria.add(Restrictions.eq("vote" , Boolean.TRUE));
criteria.setProjection(Projections.rowCount());

Сгенерированный SQL является sum(this_.vote) as y1_ и генерирует правильное значение суммы, но hibernate анализировал его как «логическое» значение, все становятся «истинными» ...

Как решить это?(если мне не нужно менять «голосование» с логического на целое)

среда: hibernate-3.6.0, jpa2

Большое спасибо!

1 Ответ

1 голос
/ 29 ноября 2010

Какую БД вы используете?Я думаю, что вам, возможно, потребуется изменить диалект, с которым работает hibernate.

Позвольте hibernate использовать Tinyint для логических переменных.

Не на моем рабочем аттрибуте.Если это правильное направление, ответьте мне, и я приведу пример позже.

Это может помочь вам начать работу тем временем: https://forum.hibernate.org/viewtopic.php?f=1&t=1008105

ура

РЕДАКТИРОВАТЬ:

Хорошо.Так как вы используете Mysql, вы можете расширить существующий MySQL Dialect - например, стандартный MySQL5Dialect:

 public class MySQL5DialectBooleanAsTinyint extends MySQL5Dialect {

  public MySQL5DialectBooleanAsTinyint() {
    super();
    registerColumnType(Types.BIT, "tinyint(1)");
  }

}

И это все.Чтобы использовать свой пользовательский диалект, измените ваш hibernate.cfg соответственно:

 <property name="hibernate.dialect">your.package.structure.dao.MySQL5DialectBooleanAsTinyint</property> 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...