【问题标题】:JPA/Hibernate typesafe DELETE queriesJPA/Hibernate 类型安全删除查询
【发布时间】:2011-04-06 08:49:12
【问题描述】:

我见过的唯一 CriteriaQuery 示例是针对 SELECT 查询的。有没有办法使用 JPA 2 或 Hibernate API 构建类型安全的 DELETE 查询?

【问题讨论】:

    标签: hibernate jpa-2.0 criteriaquery


    【解决方案1】:

    我认为这是不可能的。

    引用自http://blogs.oracle.com/ldemichiel/entry/java_persistence_2_0_public1

    Criteria API 目前不支持更新和删除操作

    【讨论】:

      【解决方案2】:

      它将提供JPA 2.1 版本。

      【讨论】:

      • here是你在2.1中删除的方式
      【解决方案3】:

      这不是直接可能的,但您可以通过 Querydsl JPA 扩展使用类型安全的 DELETE 和 UPDATE 查询。 Querydsl 在内部使用 JPQL,但为查询构造提供了类型安全的流畅接口。

      我是Querydsl的维护者,所以这个答案是有偏见的。

      【讨论】:

        【解决方案4】:

        不确定您是否可以使用 Criteria 执行此操作,但可以使用删除或更新等批量操作创建 HQL。从“Persistence with Hibernate”一书(第 535 页)中查看此示例:

        Query q = session.createQuery(
           "delete CreditCard c where c.stolenOn is not null"
        );
        int updatedCreditCards = q.executeUpdate();
        

        最好的问候!

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-10-26
          相关资源
          最近更新 更多