我需要删除一个带有子实体的实体。这是我的代码:
public void deleteCascade(Integer entityId) {
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaDelete<MyEntity> criteriaDelete = cb.createCriteriaDelete(MyEntity.class);
Root<MyEntity> myEntity = criteriaDelete.from(MyEntity.class);
criteriaDelete.where(
cb.equal(MyEntity.get(MyEntity_.id), entityId)
);
em.createQuery(criteriaDelete).executeUpdate();
}
由于孤儿,这显然不起作用。我知道2个不能让我满意的解决方案:
我实际上更喜欢在某个地方使用一个简单的参数,但是如果它存在则找不到。
有什么想法吗?
答案 0 :(得分:0)
解决方案1.有两个查询:
解决方案2:我不确定这与你的第二个想法不一样:
标记与orphanRemoval=true