После того, как я оставил объект своего объекта на бэкэнд (mysql), любой последующий клиентский звонок для обновления списка экипировки (сбор в отеле) впадает в эту ошибку (даже если я маркировать коллекцию быть извлечена нетерпеливый):Обновление списка после повторных попыток: не удалось лениво инициализировать коллекцию, сеанс или сеанс не были закрыты
не удалось лениво инициализировать коллекцию, не сеанс или сеанс был закрыт
Managed боб фронтэнда (с использованием JSF):
public void save() {
hotel.setHotelUser(loginBean.getLoggedInUser());
hotel = hopAccess.persistHotel(hotel);
addMessage("Hotel saved!");
}
Entity:
@Entity
@Table(name = "hotel")
public class Hotel {
@ManyToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
@JoinTable(name = "con_hotel_equipment", joinColumns = {
@JoinColumn(name = "id_hotel", nullable = false, updatable = false) },
inverseJoinColumns = { @JoinColumn(name = "id_lookup",
nullable = false, updatable = false) })
private Set<LookUp> equipments = new HashSet<LookUp>();
Услуга:
@Override
@Transactional(value = "transactionManagerHop", propagation = Propagation.REQUIRES_NEW)
public Hotel persistHotel(Hotel hotel) {
Hotel entity = emHop.merge(hotel);
addToCache(entity);
return entity;
}
Это не проблема JSF. Возможно, вы пытаетесь получить коллекцию (здесь 'wizzardBean.hotel.equipments'), которая должна быть инициализирована лениво на стороне спящего режима. Используйте 'FetchType.EAGER', который, в свою очередь, серьезно обескуражен, используйте подходящие соединения для извлечения или используйте некоторые специфические для поставщика конфигурации (которые мне лично не нравятся). – Tiny
Спасибо, но проверьте мой код - там я уже прихожу к коллекции. –
Да, но он может скрываться где-то в другом месте. Ответ будет сделан в полном стеке стека исключений. – Tiny