Использование hibernate 3.2.4.sp1
У меня есть две сущности
Пользователь и ContactInfo
A User
имеет связанный ContactInfo
, отношение является однонаправленным, т.е. ContactInfo
не имеет представления о пользователе, которому он принадлежит (и при этом он не должен использоваться в других отношениях)
Сущность User
имеет прослушиватель сущностей, запрещающий другим пользователям, кроме самого пользователя, обновлять его в базе данных. Это отлично работает. Проблема в том, что один пользователь может обновить других пользователей ContactInfo
. Я хотел бы включить запуск прослушивателя сущностей, когда сохранение на ContactInfo
каскадно от пользователя, это возможно?
Нынешние отношения
@OneToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@Cascade( { org.hibernate.annotations.CascadeType.ALL,
org.hibernate.annotations.CascadeType.DELETE_ORPHAN })
@JoinColumn(name = "CONTACT_PERSON", nullable = false)
public ContactPerson getContactInfo() {
return contactInfo;
}
public void setContactInfo(ContactPerson contactInfo) {
this.contactInfo = contactInfo;
}
Текущий: слушатель сущности:
public class UserListener extends EntityListener {
@PreUpdate
@PrePersist
@PreRemove
public void checkWriteAuthorization(User user) throws IllegalUserAccessException {
//access rules here
}
}
Я думаю, что я ищу что-то вроде "@PreCascadeChanges
"
Фактический вызов хранилища всегда находится на объекте User
, а обновления каскадируются до ContactInfo