java - 使用 JPA 对字符串类型的数据库字段进行算术运算

标签 java jpa criteria-api

是否有任何正确的方法可以将 CriteriaBuilder 类的算术方法(sum、avg 等)与实体类的 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 中聚合函数的正常用法是使用 hibernate 投影

List results = session.createCriteria(SomeClass.class)
    .setProjection( Projections.projectionList()        
        .add( Projections.avg("someCloumn") )       
    )
    .list();

这也仅适用于数据类型bitint、float 和 int 的列。

关于java - 使用 JPA 对字符串类型的数据库字段进行算术运算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11948809/

相关文章:

java - 无法在更新的 adt 上引用库项目 android

java - 使用 JPA 将 LocalDate 存入数据库

java - 为什么我们在使用@TransactionAttribute的时候还要使用@Stateless? EJB

java - 通过接口(interface)导入 map key

java - 如何用Java读取文件并保存每一项

java - JPA Criteria API - 如何添加 JOIN 子句(尽可能一般的句子)

postgresql - 使用 JPA 的 Criteria API 按日期间隔分组

spring - 将 ParameterExpression 与 org.springframework.data.jpa.domain.Specification 一起使用时如何将参数传递给函数?

java - jQuery 在 JSP 页面中显示/隐藏 div

oracle - JPA Criteria API - 使用 ORACLE 将天数添加到 DATE