Hibernate使用条件执行更新

使用Criteriain 时可以执行更新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

回到顶部