正确使用JPA 2的方法

时间:2012-04-16 20:30:00

标签: jpa jpql

我看到this link at Nabble某人(James Sutherland)向某人说他们“正在执行删除所有JPQL查询。这基本上类似于执行自己的SQL,你负责正确执行查询以维护你的约束。

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

我想知道这是否属实;根据删除多个简单表格的难度,我开始认为这是正确的。

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

  1. 执行选择陈述,但不论其具体如何(例如, 选择所有学生课程的学生> 4和标记> = 60和
    2011年至2012年期间的学生注册。)
  2. 显示/编辑/删除 对象(所以EntityManager合并/持久/删除)
  3. 冲洗,泡沫等
  4. 这听起来像一个人如何使用JPA或者我不在基地的方法听起来合理吗?

1 个答案:

答案 0 :(得分:1)

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

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

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