У меня возникают проблемы при удалении элемента из списка. Список определен в суперклассе, но аннотации Hibernate применяются к аксессуарам свойств в подклассе. В суперклассе есть два метода, которые манипулируют списком. Метод "добавить" отлично работает, но "удалить" не сохраняется. Я проверил настройки Cascade, и у меня, похоже, все правильно. Я делаю то, что невозможно. Если нет, я делаю что-то неправильно?
Вот мои классы:
@Entity
abstract class Temporal<T> {
@Id
@GeneratedValue
private Long id;
@Version
private Integer version = null;
@Transient
protected List<T> content = new ArrayList<T>();
public void remove(T value) {
// business logic ...
content.remove(value);
}
public void add(T value) {
// business logic ...
content.add(value);
}
}
@Entity
@AccessType("property")
class TemporalAsset extends Temporal<Asset> {
@OneToMany(cascade = CascadeType.ALL, mappedBy = "temporal")
public List<Asset> getContent() {
return super.content;
}
protected void setContent(List<Asset> list) {
super.content = list;
}
}
Я использую экземпляр класса TemporalAsset следующим образом (обратите внимание, что я использую только метод "refresh" для демонстрации поведения. Список не сохраняется корректно, даже если я скрываю или закрываю сеанс и открываю новый сеанс):
temporalAsset.add(value1);
temporalAsset.getContent().size() == 1; // true
session.update(temporalAsset);
session.refresh(temporalAsset);
temporalAsset.getContent().size() == 1; // true
temporalAsset.remove(value1);
temporalAsset.getContent().size() == 0; // true
session.update(temporalAsset);
session.refresh(temporalAsset);
temporalAsset.getContent().size() == 0; // false, its 1
Спасибо.