在一个简单的“投票/投票”情景中,我想总计“向上”计数。
criteria.add(Restrictions.eq("vote" , Boolean.TRUE));
criteria.setProjection(Projections.rowCount());
生成的SQL为sum(this_.vote) as y1_
并生成正确的sum值,但hibernate将其解析为'boolean'值,全部变为'true'...
如何解决? (如果我不需要将'vote'从布尔值更改为整数)
环境:hibernate-3.6.0,jpa2
非常感谢!
答案 0 :(得分:1)
你在使用什么数据库?我想你可能需要改变hibernate工作的方言。
让hibernate使用Tinyint作为布尔变量。
不在我工作的copmuter atm上 - 抱歉。如果这可能是正确的方向,请回到我身边,稍后我会得到一个例子。
这可能有助于您在此期间开始:https://forum.hibernate.org/viewtopic.php?f=1&t=1008105
欢呼声
编辑:
确定。由于您使用的是Mysql,因此您可能希望扩展现有的MySQL方言 - 例如标准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>