1
很多行我是從這樣的人的數據庫獲取一堆:Hibernate的標準API - 更新一個數據庫查詢
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;
需要注意的是更新的方法必須使用相同的order
和limit
爲getLimitedBunchOfPersons()
方法是很重要的。
你可以得到人的ID返回迭代列表在之前的條件查詢中,您可以在更新查詢的條件中傳遞這些ID。 – Ramesh
你給了我一個好主意 – shx