gpt4 book ai didi

java - Hibernate Criteria API - 使用一个数据库查询更新多行

转载 作者:行者123 更新时间:2023-11-30 07:21:59 25 4
gpt4 key购买 nike

我正在从数据库中获取这样的人:

public List<Object[]> getLimitedBunchOfPersons(Integer limit) {

Criteria criteria = getSession().createCriteria(Person.class, "person")
.setProjection(
Projections.projectionList()
.add(Projections.property("person.personId"), "personId")
)
.createAlias("person.status","status")
.add(Restrictions.eq("status.statusId", 1L))
.addOrder(Order.asc("person.createdOn"));

return criteria.setMaxResults(limit).list();
}

由于我需要加快速度,所以我只获取了我的实体的 ID。需要注意的重要一点是,我正在处理大量行,并且对于一个查询必须使用 maxResults 限制。

现在我的问题是,如何在一个数据库查询中使用 Hibernate Criteria API 轻松更新从前面提到的查询中提取的所有行?

普通 SQL 查询会像这样:

UPDATE PERSON
SET STATUS = 2, CREATED_ON = CURRENT_TIMESTAMP
WHERE STATUS = 1;

需要注意的是,更新方法必须使用与 getLimitedBunchOfPersons() 方法相同的 orderlimit

最佳答案

对于单个对象,它将在您的代码之后按如下方式工作

Person per= (Person) criteria.uniqueResult();
per.setCreatedOn("crtBy");
currentSession.merge(per);

现在,如果出现在列表中,您可以通过在列表迭代中传递提到的代码来迭代列表

关于java - Hibernate Criteria API - 使用一个数据库查询更新多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37404799/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com