在hibernate中有批处理的示例吗?

在hibernate中有批处理的示例吗?,hibernate,persistence,spring-batch,batch-processing,Hibernate,Persistence,Spring Batch,Batch Processing,我可以在java hibernate中找到批处理的示例,以便在两个表上运行删除查询。查看相关章节。文档包括一章关于DML样式的操作: 如前所述,自动和 透明对象/关系映射 与管理有关 对象状态。对象状态为 在内存中可用。这意味着 直接在数据库中操作数据 数据库(使用SQL数据 操作语言(DML) 语句:插入、更新、删除) 不会影响内存中的状态。 但是,Hibernate提供了一些方法 对于大容量SQL样式的DML语句 通过以下方式执行的执行: Hibernate查询语言(HQL) UPDATE和

我可以在java hibernate中找到批处理的示例,以便在两个表上运行删除查询。

查看相关章节。

文档包括一章关于DML样式的操作:

如前所述,自动和 透明对象/关系映射 与管理有关 对象状态。对象状态为 在内存中可用。这意味着 直接在数据库中操作数据 数据库(使用SQL数据 操作语言(DML) 语句:插入、更新、删除) 不会影响内存中的状态。 但是,Hibernate提供了一些方法 对于大容量SQL样式的DML语句 通过以下方式执行的执行: Hibernate查询语言(HQL)

UPDATE和UPDATE的伪语法 删除语句是:
(更新|删除)
从…起EntityName(条件在哪里)?

需要注意的几点:

  • 在from子句中,from关键字是可选的
  • from子句中只能有一个名为的实体。可以,, 但是,不能使用别名。如果实体 名称是别名,然后是任何属性 引用必须使用 那个化名。如果实体名称不是 别名,则对任何 要限定的属性引用
  • 不能在批量中指定隐式或显式联接 HQL查询。子查询可用于 where子句,其中子查询 它们本身可能包含连接
  • where子句也是可选的
(……)

要执行HQL删除,请使用 相同的
Query.executeUpdate()
方法:

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

String hqlDelete = "delete Customer c where c.name = :oldName";
// or String hqlDelete = "delete Customer where name = :oldName";
int deletedEntities = s.createQuery( hqlDelete )
        .setString( "oldName", oldName )
        .executeUpdate();
tx.commit();
session.close();
函数返回的int值
Query.executeUpdate()
方法 指示实体的数量 受手术影响。这可能是,也可能是 可能与 数据库中受影响的行。一个HQL 批量操作可能导致 正在执行多个实际SQL语句 已执行(对于连接的子类,对于 示例)。返回的号码 指示实际发生的事件数 受报表影响的实体。 回到 联接子类,一个删除一个 实际上,子类的 in不仅针对表进行删除 该子类映射到的,但是 还有“根”表和 进一步连接子类表 继承层次结构


我不知道你的意思是什么,所以我可以在两个表上运行delete查询。请记住,如文档所述,批量操作不会级联。

我有两个表。在具有公共字段的两个表中。我想运行一个查询,根据公共字段从两个表中删除记录。为此,我想执行批处理查询。请更新您的原始帖子(通过单击上面的“编辑”),而不是在评论中添加内容。