什么是Hibernate相当于Projections.Cast?

时间:2011-08-30 08:12:44

标签: hibernate

我已经使用HQL解决了我的问题并且它运行良好。

但我确实喜欢Criteria API。 (我的querybuilder字符串中有一些ifs语句用于HQL,但是) 显然,Projections.sum(属性)返回double。

我的实体类有

@Column(name = "current_volume")   
private Integer currentVolume;

我得到的错误是

  

org.hibernate.PropertyAccessException:调用se.unox.pejl.entity.value.pejl.PejlDataTrendValue.currentVolume的setter时发生IllegalArgumentException。

我的等效工作hql是

select cast(sum(p.currentVolume/1000) as integer) as currentVolume from      
se.unox.pejl.entity.value.pejl.PejlDataTrendValue as p

我想我知道问题是什么,但无法弄清楚如何将整数列(在mysql中为INT(11))转换为Integer。显然NHibernate有Projections.Cast

我正在使用Hibernate 3.6

1 个答案:

答案 0 :(得分:2)

基于this blog post(除非在3.5和3.6之间更改了某些内容),Projections.sum的返回类型取决于要求的属性的属性类型:

  

对于映射为Long,Short,Integer或原始整数类型的属性,返回Long值;

     

对于映射为Float,Double或原始浮点类型的属性,将返回Double值。

如果要覆盖原生功能,follow the answer in this post