有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案