0

是否有任何适当的方法可以使用 CriteriaBuilder 类的算术方法(sum、avg 等)和 Entity 类的 String 属性(VARCHAR 列)?

这里是相关领域:

@Column(name="GRADE")
private String grade;

我想做的是:

Expression ex = criteriaBuilder.avg(root.get("grade");
4

1 回答 1

1

不能对字符串 (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的列。

于 2012-08-14T08:54:02.820 回答