[英]Using Hibernate Criteria API To Query Many-To-One Relationships with Projections
[英]Hibernate Criteria API - update many rows with one database query
我正在從數據庫中獲取這樣的人:
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()
方法相同的order
和limit
。
對於單個對象,它將在您的代碼后按如下方式工作
Person per= (Person) criteria.uniqueResult();
per.setCreatedOn("crtBy");
currentSession.merge(per);
現在,如果進入列表,您可以通過在列表迭代中傳遞提到的代碼來迭代列表
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.