Я пишу свое приложение, используя Spring MVC + Hibernate. У меня есть 2 объекта: заказ и предметы (элементы заказа).Lazy инициализация загрузки с использованием hibernate 4
сущность заказа:
@Entity
@Table(name = "orders")
public class Order {
@Id
@GeneratedValue
private int id;
@Column(name = "time")
private long time;
@OneToMany(mappedBy = "order")
private List<Item> items;
Item лицо:
@Entity
@Table(name = "items")
public class Item {
@Id
@GeneratedValue
private int
@ManyToOne(targetEntity = Order.class)
private Order order;
@Column
private int count;
Я хочу перечислить заказы на странице '/ заказов', и детали заказа в странице «/ заказы/{ID}/просмотр ».
В моем DAOImpl я пишу код ниже:
public List<Order> view() {
return sessionFactory.getCurrentSession()
.createCriteria(Order.class)
.addOrder(org.hibernate.criterion.Order.desc("time"))
.list();
}
Этого код возвращает список всех заказов. Но если я попытаюсь увидеть детали заказа, у меня есть исключение: org.apache.jasper.JasperException: org.hibernate.LazyInitializationException: не удалось лениво инициализировать коллекцию роли: ru.drupo.order.domain.Order.items, не удалось инициализировать proxy - нет сеанса.
В списке есть дубликаты заказов, если я добавляю к объекту заказа fetch = FetchType.EAGER. Но детали заказа отображаются правильно.
Как я могу инициализировать ленивую загрузку?
Спасибо, это работает. – Mufanu