【发布时间】:2016-11-10 11:37:28
【问题描述】:
SQL语句:
UPDATE table SET column = 'new_value' WHERE column = 'old_value'
(相同的列名)
如何在 Hibernate 中做到这一点?
【问题讨论】:
SQL语句:
UPDATE table SET column = 'new_value' WHERE column = 'old_value'
(相同的列名)
如何在 Hibernate 中做到这一点?
【问题讨论】:
您可以使用 EntityManager.merge() 如果找到多个具有相同列名的结果,则可能导致 NonUniqueObjectException。
最好使用 NamedQuery 或 NativeNamedQuery 来实现这一点。
【讨论】:
我的理解是您希望执行批量更新。
我建议你参考这个link
您可以使用以下代码来完成此操作。
Session session = sessionFactory.openSession();
Transaction tx = session.beginTransaction();
String hqlUpdate = "update Customer c set c.name = :newName where c.name = :oldName";
int updatedEntities = s.createQuery( hqlUpdate )
.setString( "newName", newName )
.setString( "oldName", oldName )
.executeUpdate();
tx.commit();
session.close();
请注意链接中提到的以下几点。
在批量 HQL 查询中禁止隐式或显式连接。您可以在 WHERE 子句中使用子查询,子查询本身可以包含连接。
【讨论】: