2

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

4

4 回答 4

7

I don't think it's possible.

Quoted from http://blogs.oracle.com/ldemichiel/entry/java_persistence_2_0_public1 :

The Criteria API does not currently support update and delete operations

于 2011-05-22T22:01:31.997 回答
7

它将在JPA 2.1版本中可用。

于 2012-10-22T01:24:09.340 回答
5

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

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

于 2011-07-07T06:59:25.860 回答
-6

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

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

此致!

于 2011-04-06T09:07:17.697 回答