是否有任何正确的方法可以将CriteriaBuilder类的算术方法(sum,avg等)与Entity类的String属性(VARCHAR列)一起使用?
以下是相关字段:
@Column(name="GRADE")
private String grade;
我想做的是:
Expression ex = criteriaBuilder.avg(root.get("grade");
答案 0 :(得分:1)
无法在String(VARCHAR)数据类型上使用聚合函数。
在Oracle http://docs.oracle.com/cd/E12839_01/doc.1111/e12048/funcbltag.htm
的引用中 Hibernate中聚合函数的正常使用是通过使用休眠projections
List results = session.createCriteria(SomeClass.class)
.setProjection( Projections.projectionList()
.add( Projections.avg("someCloumn") )
)
.list();
这也适用于只有数据类型的列,只有 bitint,float和int 。