使用 JPA/休眠来复制“删除时设置 NULL”功能
我已经能够让JPA / Hibernate成功复制功能(似乎是默认行为),但我现在正在尝试复制该功能,并且我遇到了问题。ON DELETE CASCADE
ON DELETE SET NULL
这是我的两个类:
@Entity
@Table(name = "teacher")
public class Teacher
{
@Id
@GeneratedValue
@Column(name = "id", nullable = false, length = 4)
private int id;
@OneToMany(mappedBy = "teacher")
private List<Student> studentList;
// ...
}
@Entity
@Table(name = "student")
public class Student
{
@Id
@GeneratedValue
@Column(name = "id", nullable = false, length = 4)
private int id;
@ManyToOne(optional = true)
@JoinColumn(name = "teacher_id", nullable = true)
private Teacher teacher;
// ...
}
当我尝试删除教师时,出现以下错误:
org.springframework.dao.DataIntegrityViolationException: 無法執行 JDBC batch update;SQL [从教师中删除,其中teacher_id=?];约束 [空]
...
由以下原因导致:org.hibernate.exception.ConstraintViolationException: 无法执行 JDBC 批量更新
...
由以下原因导致:java.sql.BatchUpdateException:批处理条目 0 从教师中删除,其中 teacher_id='1' 已中止。调用 getNextException 查看原因。
我做错了什么吗?这是可以实现的吗?
谢谢。