是否有任何适当的方法可以使用 CriteriaBuilder 类的算术方法(sum、avg 等)和 Entity 类的 String 属性(VARCHAR 列)?
这里是相关领域:
@Column(name="GRADE")
private String grade;
我想做的是:
Expression ex = criteriaBuilder.avg(root.get("grade");
是否有任何适当的方法可以使用 CriteriaBuilder 类的算术方法(sum、avg 等)和 Entity 类的 String 属性(VARCHAR 列)?
这里是相关领域:
@Column(name="GRADE")
private String grade;
我想做的是:
Expression ex = criteriaBuilder.avg(root.get("grade");
不能对字符串 (VARCHAR) 数据类型使用聚合函数。
在 Oracle 的参考http://docs.oracle.com/cd/E12839_01/doc.1111/e12048/funcbltag.htm
Hibernate中聚合函数的正常使用是通过使用hibernateprojections
List results = session.createCriteria(SomeClass.class)
.setProjection( Projections.projectionList()
.add( Projections.avg("someCloumn") )
)
.list();
这也仅适用于数据类型为bitint、float 和 int的列。