在类型字符串的DB字段上使用JPA进行算术运算

时间:2012-08-14 08:49:07

标签: java jpa criteria-api

是否有任何正确的方法可以将CriteriaBuilder类的算术方法(sum,avg等)与Entity类的String属性(VARCHAR列)一起使用?

以下是相关字段:

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

我想做的是:

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

1 个答案:

答案 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