Это может показаться очень простым вопросом, но я боролся с ним некоторое время. У меня есть две сущности Клиент и Пользователь, где Клиент является родителем Пользователя. Объекты аннотируются следующим образом:
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.
Кто-нибудь знает, как это исправить?