1

在 Nabble 看到了这个链接,有人(James Sutherland)对某人说他们正在“执行删除所有 JPQL 查询。这基本上类似于执行您自己的 SQL,您负责正确执行查询以维护您的约束。

这不是在 JPA 中删除对象的常规方法。在 JPA 中,您通常读取对象,然后对其调用 remove()。”。

我想知道这是不是真的;基于删除不仅仅是简单表格的难度,我开始认为这是正确的。

到目前为止,我的想法是这样做:

  1. 执行选择语句,无论它们多么具体(例如
    ,选择所有学生课程 > 4 且分数 >= 60 以及
    2011 年至 2012 年之间的学生注册)。
  2. 显示/编辑/删除对象(因此 EntityManager 合并/持久/删除)
  3. 冲洗、起泡等

作为一种假设如何使用 JPA 的方法,这听起来是否合理,还是我不在基地?

4

1 回答 1

1

此处讨论了 remove 的级联:Google App Engine - DELETE JPQL Query and Cascading。此外,例如,当使用乐观锁定时,进行批量更新不会更新版本列。因此批量更新/删除在 JPA 中有点残缺。

但我不会说这不是在 JPA 中删除对象的正常方法。当我需要根据某些条件删除 2、20 或 200 个对象时,首先选择并获取它们只是为了调用remove()每个对象在大多数情况下都是一个坏主意。

在规范中存在所有批量更新/删除之后是有原因的。

于 2012-04-16T20:47:24.567 回答