java - ORA-02292 : integrity constraint violated - child record found - fetchType issue?

标签 java hibernate jpa spring-data-jpa jpql

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

我有一张名为 UNIVERSITY 的表和一张名为 STUDENT 的表。

@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 不能保证可以进行此删除?

谢谢!

最佳答案

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

关于java - ORA-02292 : integrity constraint violated - child record found - fetchType issue?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55189512/

相关文章:

java - 无法理解此扫描仪或附加命令

java openCV Core.inRange 输入参数

java - Hibernate 映射 - 将两个表连接到一个平面类

JPA Criteria API 缺失

java - 如何从 javax.persistence.Query 获取查询字符串?

java - 在java中将类的实例存储在另一个类中

java - 如何仅在选取与给定模式匹配的所有文件时获取当前日期的文件

java - hibernate 。优化 sqlRestriction

java - Hibernate 连接数据库中的每个表

java - Hibernate @AttributeOverride 导致将属性设置为@Transient