这似乎是一个非常简单的问题,但我已经为此苦苦挣扎了一段时间。我有两个实体客户端和用户,其中客户端是用户的父级。实体注释如下:
Client:
@OneToMany(mappedBy = "client", fetch = FetchType.LAZY)
@Cascade({CascadeType.SAVE_UPDATE, CascadeType.DELETE})
private List<User> users = new ArrayList<User>();
User:
@ManyToOne(optional = false, fetch = FetchType.EAGER, cascade = {CascadeType.REFRESH})
@JoinColumn(name = "client_id")
private Client client;
public User(Client client, String userName, String password) {
client.getUsers().add(this);
}
我需要在客户端删除以级联给用户。如果客户端和用户是在一个 Hibernate 会话中创建的,而客户端在另一个 Hibernate 会话中被删除,则此方法有效。但是,如果我尝试在同一个会话中删除客户端,则永远不会发出对用户的删除,并且我得到 org.hibernate.exception.ConstraintViolationException。
有人知道如何解决这个问题吗?