orm - 更新 JPA CriteriaUpdate 中的现有列值

标签 orm eclipselink jpa-2.1

我有一个实体用户,我的用户数据库值为:

name     totalScore
--------------------
ABC        25
XYZ        30

现在我想运行查询
update user set totalScore=totalScore+ (2*totalScore);

我们如何通过 JPA 2.1 CriteriaUpdate 实现它???
CriteriaBuilder criteriaBuilder = em().getCriteriaBuilder();
       //Updates the salary to 90,000 of all Employee's making more than 100,000.
        CriteriaUpdate update = criteriaBuilder.createCriteriaUpdate(User.class);
        Root user = update.from(User.class);
        Expression<Long> abc=user.get("totalScore");

        update.set("totalScore", ?? ); 
// what expression is here to be used to replace old value with new 
        Query query = em().createQuery(update);
        int rowCount = query.executeUpdate();

最佳答案

您可以使用此代码。它会为你工作

// Gives all Employees a 10% raise.

CriteriaUpdate update = criteriaBuilder.createCriteriaUpdate(Employee.class);

Root employee = update.from(Employee.class);

update.set(employee.get("salary"),criteriaBuilder.sum(employee.get("salary"), criteriaBuilder.quot(employee.get("salary"), 10));

Query query = entityManager.createQuery(update);
int rowCount = query.executeUpdate();

关于orm - 更新 JPA CriteriaUpdate 中的现有列值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31186131/

相关文章:

java - 在 Weblogic 12.1.x 应用程序服务器上为 JPA 2.1 + 'Spring Data JPA' 选择哪个 Maven 依赖项?

java - 如何在mybatis中的IN子句中使用超过1000个参数?

java - 更改 JPA 生成的表列的数据类型

jakarta-ee - 如何使用JPA标准api左连接两个不相关的实体?

java - Spring JPA 中的作者少书籍多对多关系

java - 如何在数据库版本之间进行JPA更新?

python - 你如何在 Peewee 模型中存储列表?

python - 如何获得 peewee 结果长度

java - 在 2 个表之间拆分 Hibernate 实体

jpa - EclipseLink 中的 PersistenceUnitInfo 实现