2012-05-01 2 views
3

util.List 개의 인스턴스가 있습니다. 각 인스턴스에는 다른 컬렉션이 있습니다. 컬렉션의 모든 인스턴스를 초기화하려고합니다. 방법은 다음과 같습니다.최대 절전 모드에서 컬렉션 컬렉션을 초기화하는 방법

Hibernate.initialize(parentList); 

하지만 세션이 닫힐 때. parentList의 객체의 프롭퍼티를 취득 할 수 있습니다. 그러나 해당 컬렉션의 인스턴스 속성을 검색 할 수 없습니다. 초기화하는 방식이 잘못되었거나 다른 문제가 있습니까? 또는 모든 인스턴스를 초기화하는 방법.

답변

10
Hibernate.initialize(parentList); 

은 목록 안의 연관성이없는 개체를 초기화합니다. 워드 프로세서

:

참고 :이 내용은 프록시 객체 또는 수집하는 초기화를 보장; 컬렉션 내부의 요소가 초기화/구체화되었음을 보증하지 않습니다.

편집 : 나는 하나 Student 엔티티와 엔티티가 Course 엔터티의 목록을 가지고 모든 학생이 있다면 코멘트

말 당으로. 그런 다음 학생들의 목록은 다음과 같이 초기화 할 수 있습니다 :

for (Student student : studentList) { 
    Hibernate.initialize(student.getCourses()); 
} 
+1

감사합니다. 그런 다음 초기화하는 방법이 있습니까? –

+1

** 참고 : - ** 직접 프록시 만 초기화됩니다. 프록시의 프록시가 필요한 경우, 다시'initialize()'를 호출해야합니다. 감사합니다 –

+0

이것을 확인할 수 있습니까? http://stackoverflow.com/questions/40392996/does-hibernate-initialize-requires-a-time-delay 내 문제는 내가 디버그 포인트를 추가하고 몇 초만 기다리면 내 목록을 얻을 수 있습니다. 그렇지 않으면 작동하지 않습니다. – Ratha

0

일할 수있는 깨끗한 방법, 게으른 로딩을 계속 사용하고 반대로 값 객체와에 영속 객체에서 데이터를 전송하는 값 객체 디자인 패턴을 사용하는 것입니다.

관련 문제