我是hibernate的新手,我不太了解hibernate的删除和保存在内部是如何执行的。
我不得不修复现有代码中的某些内容。代码当前使用的表确实定义了外键,但尚未在表上定义删除级联。
尽管如此,现有的代码确实从原始表中删除了条目。
我不知道代码目前是如何处理它的。是否可以为外键删除定义一些休眠设置,而不是在DB中定义。如果是,那么如何。任何提示都会有所帮助。
级联删除也可以在hibernate中定义。
参见示例(使用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("delete User where id=1").executeUpdate()将导致FK引用错误,可能是