hibernate @Formula使用问题及分析

来源:互联网 发布:马哥linux培训多少钱 编辑:程序博客网 时间:2024/06/08 15:46

在entity中有些属性不用保存到数据库,比如我遇到的统计次数就没存数据库,而是使用的hibernate的注解@Formula进行查询。

@Formula多数情况下用于做统计用途,但是在使用的时候遇到一个问题,始终无法查询出条数。

代码:

//@Transient@Formula(value="(select count(*) from FoodPoiVarietyRecommentLog f where f.poiId=poiId and f.varietyFood_id=varietyFood_id )")public Integer getRecommentNum() {return recommentNum;}public void setRecommentNum(Integer recommentNum) {this.recommentNum = recommentNum;}//@Transient@Formula(value="(SELECT avg(f.price) from FoodPoiVarietyRecommentLog f where f.poiId=poiId and f.varietyFood_id=varietyFood_id )")public Double getAvgPrice() {return avgPrice;}

最终发现是@Transient不能和@Formula一起使用,这样@Formula会失效。但其他有些一起使用却是可以的,可能是版本有差异。

我用的是5.2.4的,我看其他有些版本是可以的。

@Formula后面是sql,并不是hql。即原生sql写法

@Formula使用的时候,本entity的注解要么全在方法上,要么全在变量上


注意的一点是部分版本不能和@Transient一起使用,如果确认sql等没有写错,一直为null,注释@Transient看看是不是版本问题引起的。

我把@Transient注释了以后一切OK


原创粉丝点击