SQL语句:
UPDATE table SET column = 'new_value' WHERE column = 'old_value'
(同一列名)
如何在Hibernate中执行此操作?
答案 0 :(得分:0)
您可以使用EntityManager.merge(),如果找到多个具有相同列名的结果,则可能导致NonUniqueObjectException。
最好使用NamedQuery或NativeNamedQuery来实现这一点。
答案 1 :(得分:0)
我的理解是你想要进行批量更新。
我建议你参考这个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子句中使用子查询,子查询本身可以包含连接。