【问题标题】:Hibernate update with same column休眠更新与同一列
【发布时间】:2016-11-10 11:37:28
【问题描述】:

SQL语句:

UPDATE table SET column = 'new_value' WHERE column = 'old_value'

(相同的列名)

如何在 Hibernate 中做到这一点?

【问题讨论】:

    标签: java mysql sql hibernate


    【解决方案1】:

    您可以使用 EntityManager.merge() 如果找到多个具有相同列名的结果,则可能导致 NonUniqueObjectException。

    最好使用 NamedQuery 或 NativeNamedQuery 来实现这一点。

    【讨论】:

      【解决方案2】:

      我的理解是您希望执行批量更新。

      我建议你参考这个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 子句中使用子查询,子查询本身可以包含连接。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-10-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多