java Hibernate查询。executeUpdate()执行许多查询
我用HQL创建一个查询,一次更新几个对象,所以hibernate不需要单独同步每个对象。以下是我的疑问:
String queryString = "UPDATE transaction SET value = :newValue, date = :date, user = :user WHERE id in (:idList)";
final Query query = session.createQuery(queryString);
query.setParameter("date", entityList.get(0).getRegDate());
query.setParameter("user", entityList.get(0).getRegUser());
query.setParameter("newValue", newValue);
query.executeUpdate();
所以我会做一个查询来更新实体列表。但当我执行时,控制台会输出
Hibernate:
update
TRANSACTION_RECEIPT
set
DATE=?,
USER=?,
ACQ_ID=?,
ESTIMATED_DATE=?,
STATUS=?,
VALUE=?
where
ID=?
Hibernate:
update
TRANSACTION_RECEIPT
set
DATE=?,
USER=?,
ACQ_ID=?,
ESTIMATED_DATE=?,
STATUS=?,
VALUE=?
where
ID=?
Hibernate:
update
TRANSACTION_RECEIPT
set
DATE=?,
USER=?,
ACQ_ID=?,
ESTIMATED_DATE=?,
STATUS=?,
VALUE=?
where
ID=?
Hibernate:
update
TRANSACTION_RECEIPT
set
STATUS=?,
regdate=?,
reguser=?
where
ID in (
? , ? , ?
)
它会更新我也不想保留的其他值。在executeUpdate()之前,我尝试使用会话#execut将实体与上下文分离:
for (BaseEntity entity : entityList) {
session.evict(entity);
}
但这并没有改变任何事情。 如何防止额外的更新行? 我正在使用Hibernate的sessionFactory,但我在项目中没有entityManager
共 (0) 个答案