当前位置: 首页 > 面试题库 >

Hibernate使用条件执行更新

葛磊
2023-03-14
问题内容

使用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语句执行的方法…

因此,尽管这不是关于 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();

简介:具有以下特点:

  • 我们可以使用查询来过滤结果
  • 我们可以对其进行批量更新
  • 我们不需要将内存中的这些行加载到会话中…


 类似资料:
  • 问题内容: 我在Postgres 11.3数据库中有一个带有列的表。 尝试更新嵌套数组名称中的所有对象。 如果路径是对象,则应将路径从对象更新为具有以下值的字符串: 如果不存在该路径,则该对象应保持不变。 使用查询测试设置:小提琴链接 所需结果: 我已经修改了查询并链接到小提琴中。有人可以看看是否正确吗? 问题答案: 平原应该有所作为。 db <>在这里 拨弄 (Postgres 11!) 为了同

  • 问题内容: SELECT supplier_id FROM suppliers UNION ALL 我只是在查询的“ UNION ALL”子句上方和查询的“ UNION ALL”子句上方创建两个条件。 但是我的问题是我如何在条件中执行UNION ALL子句?提前致谢。 问题答案: 我认为hibernate不支持条件,但是您可以使用两个条件查询来获得预期的结果:

  • 问题内容: 我正在尝试运行一个更新查询,它将在sql中看起来像这样: 我正在尝试使用 Criteria 这样重新创建查询: 这行不通,因为满足该条件的行很多,我的独特结果是我猜这里的问题。如何将其转换为符合条件的所有行的更新。我不想使用HQL查询,而是使用Criteria来执行。 问题答案: 始终建议执行批量操作非常接近数据库,除非需要,否则我们不需要在会话中保留更新的对象,因此,在执行批量操作时

  • 为了写出更实用的程序,我们几乎总是需要检查特定条件,并相应地改变程序的行为。条件语句给了我们这种能力。最简单的形式是if语句: if( x > 0){ cout << "x is positive" <<endl; } 圆括号中的表达式被称为条件。如果条件为真,则花括号中的语句会被执行。否则不执行。 条件可以包括任何比较操作符: x == y //x等于y x !=

  • 问题内容: 如何将sql查询写入hibernate条件? 问题答案: 想我找到了答案。您必须使用Projection.sqlProjection()而不是Projections.sum()。例:

  • 问题内容: 我有两个实体:和。我正在使用Hibernate 3.6。 如何使用休眠标准实现这一目标,最重要的是,我必须将其用于分页。 而“我的道”如下所示以显示jqgrid中的“问题”列表 公共列表showHelpDeskIssues(DetachedCriteria dc,int from,int size){ 对于简短的解释,请参考此问题,如何使用struts2-jqgrid插件在jqgrid