我们与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?
答案 0 :(得分:1)
根据您的上下文,我只看到一个选项:本机查询。
答案 1 :(得分:1)
在纯粹的JPA上,我不知道干净的方法
如果您在幕后使用Hibernate
,则有一个高级解决方案:
@Entity
@Where(clause='isActive=true')
public class Entity2{
}