【发布时间】:2011-04-06 08:49:12
【问题描述】:
我见过的唯一 CriteriaQuery 示例是针对 SELECT 查询的。有没有办法使用 JPA 2 或 Hibernate API 构建类型安全的 DELETE 查询?
【问题讨论】:
标签: hibernate jpa-2.0 criteriaquery
我见过的唯一 CriteriaQuery 示例是针对 SELECT 查询的。有没有办法使用 JPA 2 或 Hibernate API 构建类型安全的 DELETE 查询?
【问题讨论】:
标签: hibernate jpa-2.0 criteriaquery
我认为这是不可能的。
引用自http://blogs.oracle.com/ldemichiel/entry/java_persistence_2_0_public1:
Criteria API 目前不支持更新和删除操作
【讨论】:
这不是直接可能的,但您可以通过 Querydsl JPA 扩展使用类型安全的 DELETE 和 UPDATE 查询。 Querydsl 在内部使用 JPQL,但为查询构造提供了类型安全的流畅接口。
我是Querydsl的维护者,所以这个答案是有偏见的。
【讨论】:
不确定您是否可以使用 Criteria 执行此操作,但可以使用删除或更新等批量操作创建 HQL。从“Persistence with Hibernate”一书(第 535 页)中查看此示例:
Query q = session.createQuery(
"delete CreditCard c where c.stolenOn is not null"
);
int updatedCreditCards = q.executeUpdate();
最好的问候!
【讨论】: