gpt4 book ai didi

java - Hibernate 使用条件执行更新

转载 作者:搜寻专家 更新时间:2023-10-30 21:22:10 25 4
gpt4 key购买 nike

Hibernate 中使用 Criteria 时是否可以执行更新?例如:

Session session = getSession();
Criteria crit = session.createCriteria(User.class);
crit.add(Restrictions.eq("token", sessionToken));

User user= new User();
Transaction tx = session.getTransaction();
try
{
tx.begin();
session.updateWithCriteria(user, crit); //my imaginary function
tx.commit();
}
catch (Exception e)
{
e.printStackTrace();
tx.rollback();
}

session.close();

最佳答案

有一个非常强大的功能叫做:

15.4. DML-style operations

来自文档的小引用:

... However, Hibernate provides methods for bulk SQL-style DML statement execution that is performed through the Hibernate Query Language...

因此,虽然这与criteria 无关 - 我们仍然可以使用我们的域模型进行查询,因为它与 HQL 有关。这是显示功能的片段:

Session session = sessionFactory.openSession();
Transaction tx = session.beginTransaction();

String hqlUpdate = "update Customer c set c.name = :newName where c.name = :oldName";
// or String hqlUpdate = "update Customer set name = :newName where name = :oldName";
int updatedEntities = s.createQuery( hqlUpdate )
.setString( "newName", newName )
.setString( "oldName", oldName )
.executeUpdate();
tx.commit();
session.close();

总结:准备就绪:

  • 我们可以使用查询来过滤结果
  • 我们可以对其应用批量更新
  • 我们不需要将这些行加载到内存中,加载到 session 中...

关于java - Hibernate 使用条件执行更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25817997/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com