JPA ManyToMany在链接表上过滤

时间:2014-03-13 14:42:45

标签: jpa jpa-2.0

我们与Entity1和Entity2有很多关系。

现在,当我们删除Entity2的一个元素时,我们实际上并没有将其从数据库中删除,而只是有一个字段" isActive"我们设置为假。

当发生这种情况时,我们希望删除Entity1的任何元素与Entity2的元素之间的所有关系,该元素是"删除"。

在SQL中,这将转换为entity1表,entity2表和entity1TOentity2表。在SQL中,我们可以简单地进行一次更新,

delete from entity1TOentity2 where entity2ID = :entity2Id

在JPA中,我们可以将Entity1的所有元素作为对象加载,在关系上加入fetch,然后在Java中逐个删除连接,但是它非常浪费......

有没有办法用JPAQL制定SQL查询?

我知道可以explicitly define a link entity, and make JPA use it,然后我想我可以运行一个与该链接实体上的SQL基本相同的查询,但它似乎有点矫枉过正。

我是否错过了与原始SQL一样好的解决方案,但使用的是JPA API / JPAQL?

2 个答案:

答案 0 :(得分:1)

根据您的上下文,我只看到一个选项:本机查询。

答案 1 :(得分:1)

在纯粹的JPA上,我不知道干净的方法 如果您在幕后使用Hibernate,则有一个高级解决方案:

@Entity
@Where(clause='isActive=true')
public class Entity2{
}