У меня есть проблема с тем, как спящий режим загружает некоторые компоненты из базы данных.Hibernate, вызывающий неправильный сеттер
Мы используем bean/beanHistoric структуру, чтобы сохранить все изменения, сделанные на этом компоненте. Когда мы сохраняем некоторые изменения в экземпляре bean, мы создаем beanHistoric с теми же данными и сохраняем его, чтобы сделать это, чтобы некоторые сеттеры не были точно настроены. Например:
@Entity
public class beanHistoric {
List<AnotherBeanHistoric> anotherBeanListH;
@OneToMany(mappedBy="beanHistoric", cascade=CascadeType.ALL, fetch=FetchType.EAGER)
@Cascade({org.hibernate.annotations.CascadeType.ALL})
public List<AnotherBeanHistoic> getAnotherBeanList(){
return this.anotherBeanListH;
}
public void setAnotherBeanList(List<AnotherBean> anotherBeanList){
for (AnotherBean anotherBean : anotherBeanList){
anotherBeanListH.add(new AnotherBeanHistoric(anotherBean))
}
}
private void setAnotherBeanListH(List<AnotherBeanHistoric> anotherBeanList){
this.anotherBeanListH = anotherBeanList;
}
}
Как вы можете увидеть атрибут записывается anotherBeanListH, но зимуют звонит setAnotherBeanList для заполнения объекта один раз его загружены из базы данных вместо setAnotherBeanListH.
Любые идеи, почему это происходит?
«setAnotherBeanListH» является приватным - попробуйте сделать его общедоступным – vikingsteve
Как отображается объект. Где аннотации? –
Попытка это прямо сейчас, и это не сработало. Я сделал это частным, так как спящий режим должен использовать рефлексию для заполнения атрибутов и доступа к приватным методам. (Также я не хочу, чтобы какой-нибудь любопытный разработчик использовал его ;-)) Редактирование вопроса с помощью анотаций. – Koalk