데이터베이스에 customers
테이블에 CustomerEntity를 매핑했습니다. 그것은 orders
과 addresses
에 대해 일대 다 관계를가집니다. 지금은 다음 코드로 주문과 함께 고객을 retreive :Hibernate의 LazyInitializationException을 해결하는 방법
DetachedCriteria criteria = DetachedCriteria.forClass(CustomerEntity.class);
criteria.add(Restrictions.eq("id", patientId));
criteria.createCriteria("orders", CriteriaSpecification.LEFT_JOIN).add(Restrictions.and(
Restrictions.isNull("deletedDate"),
Restrictions.or(Restrictions.isNull("old"), Restrictions.eq("old", BoolType.FALSE))));
CustomerEntity customer = queryDao.searchSingle(criteria);
QueryDAO :
public <T> T searchSingle(DetachedCriteria criteria) {
return (T) criteria.getExecutableCriteria(getCurrentSession()).uniqueResult();
}
하지만 슬로우됩니다 customer.getAddresses()
다음 예외를 호출 할 때 :
org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: , no session or session was closed
그것은 기본적으로하기 때문에 발생 Hibernate는 일대 다 엔티티로 로딩되지 않는다. Customer
개체를 수정하지 않고도 어떻게하면 addresses
개체를 검색 할 수 있습니까?
나는 여기에 손가락을 흔들어야한다 : 당신이 "동면하는 lazyinitializationexception"을 봤다면, 왜, 어떻게 해결할 것인가? 기존의 많은 stackoverflow 스레드. – Gimby