我正在使用hibernate 4.3.1 hibernate的最终版本。
在hibernate映射文件中,我已将该属性定义为整数。
例如:<property name= "jobNo" type="integer">
使用的数据库是DB2。
其中jobNo列定义为Integer
。
尝试使用Projection API重新计算jobNo时:
criteria.setProjection(Projections.count(jobNo));
criteria.uniqueResult();
它以Long
返回。理想情况下,它应该以{{1}}返回。
我是新手,有人可以帮助我吗?
答案 0 :(得分:0)
它正在返回Long。理想情况下,它应该作为整数返回。
你没有动手。它由你的JPA实现处理(这里是休眠)。
如果您知道count
返回的值不能超过整数最大值(2147483647),那么它应该不是问题。您可以将Long转换为Integer。如果您有疑问,可以检查Long值是否超过
整数最大值。
无论如何,我建议你转换为Number
而不是Long
,如果你改变JPA实现,你可能会避免意外。
int jobNo = ((Number)criteria.uniqueResult()).intValue();
答案 1 :(得分:0)
org.hibernate.criterion.Projections.count(String propertyName)始终返回Long值,就像HQL返回的值一样。在映射中使用Long类型。如果您不想更改映射类型,则在Hibernate 4.1 Count Projection Type Mismatch (Long/Integer) using Result Transformer给出另一个解决方案。希望这会有所帮助。