簡體   English   中英

Hibernate Criteria API - 使用一個數據庫查詢更新多行

[英]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()方法相同的orderlimit

對於單個對象,它將在您的代碼后按如下方式工作

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

現在,如果進入列表,您可以通過在列表迭代中傳遞提到的代碼來迭代列表

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM