使用 JPQL 从实体的元素集合中删除
Posted
技术标签:
【中文标题】使用 JPQL 从实体的元素集合中删除【英文标题】:Delete from entities' ElementCollections with JPQL 【发布时间】:2012-06-23 21:35:02 【问题描述】:我的实体User
有一个基本集合:
@ElementCollection
private Set<String> completedQuests = Sets.newHashSet();
如何从该集合中删除一些值为所有/多个用户?这个伪查询的正确 JPQL 是什么?
DELETE FROM User.completeQuests
WHERE value IN (:collectionOfValues)
(仅 Hibernate 的替代方案,虽然不是首选,但也是受欢迎的。)
【问题讨论】:
【参考方案1】:如果所有其他方法都失败,则使用原生 SQL。
em
.createNativeQuery(
"DELETE FROM user_completedquests " +
"WHERE completedquests IN (:daily)"
)
.setParameter("daily", dailyQuests)
.executeUpdate();
(还没有测试过)
【讨论】:
感谢作弊...不是 JPQL :)以上是关于使用 JPQL 从实体的元素集合中删除的主要内容,如果未能解决你的问题,请参考以下文章
JPQL:如何使用 where 子句实现与集合成员声明相同的功能?