我是hibernate的新手,我对Hibernate在内部删除和保存执行的准确程度并不了解。
我必须修复现有代码中的内容。代码当前使用的表确实定义了外键,但表中尚未定义删除级联。
现有代码仍会删除原始表中的条目。
我无法弄清楚代码目前是如何处理它的。是否可以为外键删除定义一些休眠设置,而不是在DB中定义。 如果是,那么如何。任何提示都会有所帮助。
答案 0 :(得分:0)
也可以在休眠中定义级联删除。
参见示例(使用JPA注释):
@Entity
public class User {
@Id
private Long id;
@OneToMany(mappedBy = "user", cascade = CascadeType.REMOVE)
private List<Address> addresses;
}
@Entity
public class Address {
@Id
private Long id;
private String cityName;
@ManyToOne
private User user;
}
现在假设这个代码示例:
User user = entityManager.find(User.class, 1L);
entityManager.remove(user);
删除用户将触发关联地址的级联删除。
请注意使用HQL(或JPQL)。它不会触发级联删除,例如entityManager.createQuery(“删除用户,其中id = 1”)。executeUpdate()可能会导致FK引用错误