Hibernate使用条件执行更新
使用Criteria
in 时可以执行更新Hibernate
吗?例如:
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风格的操作](http://docs.jboss.org/hibernate/orm/4.3/manual/en-
US/html/ch15.html#batch-direct)
来自doc的小引用:
…但是,Hibernate提供了通过Hibernate查询语言执行批量SQL样式DML语句执行的方法…
因此,尽管这不是关于 -我们仍然可以使用我们的域模型进行查询,因为它与 有关。这是显示功能的代码段:
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();
简介:具有以下特点:
- 我们可以使用查询来过滤结果
- 我们可以对其进行批量更新
- 我们不需要将内存中的这些行加载到会话中…
以上是 Hibernate使用条件执行更新 的全部内容, 来源链接: utcz.com/qa/417060.html