ORA-02292:违反完整性约束-找到子记录-fetchType问题?

时间:2019-03-15 19:26:39

标签: java hibernate jpa spring-data-jpa jpql

从具有多个子实体的表中删除时,我遇到了一个小问题。

我有一张叫大学的桌子,还有一个叫学生的桌子。

@OneToMany(mappedBy = "university", fetch = FetchType.EAGER, cascade = CascadeType.ALL, orphanRemoval = true)
private List<Student> studentList = new ArrayList<>();

@ManyToOne(fetch = FetchType.EAGER)
private University university;

我希望从大学表中删除一行:

@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
public void deleteFromUniveristy(Long id) {
    em.createNamedQuery(University.DELETE_BY_ID)
            .setParameter("id", id)
            .executeUpdate();
}

@NamedQuery(name = University.DELETE_BY_ID, query = "delete from University uu where uu.id =:id")

但是收到错误消息:

java.sql.SQLIntegrityConstraintViolationException: ORA-02292: integrity constraint violated - child record found

我不明白,orphanRemoval = true,并且给定的CascadeType不保证可以删除吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

可以使用entityManager.remove(entity)方法删除带有孩子的父母。级联在删除JPQL中不起作用。