2012-05-04 2 views
0

세션을 닫은 후로드 메소드를 사용하여 학생 객체를로드하는 중입니다. 최대 절전 모드 3.0에서 학생 이름을 인쇄하려합니다. 가 있습니다. LazyInitializationException : 프록시를 초기화 할 수 없습니다. - 소유 세션 코드를 언급 .IRetirve 엔티티 정보가 세션 종료 후 session.laod를 사용하여 예외가 발생했습니다.

 Session session=HibernateUtil.currentSession(); 
    Transaction tx=session.beginTransaction(); 
    Object o1=session.load(Student.class,new Integer(2)); 
    tx.commit(); 
    session.close(); 
      log.info("Student name"+((Student)o1).getSname()); 

다음 내가 다른 게으른 속성 추가 snipet 닫힌 = "true"를 나누었다 같은 오류가이 문제를 해결하려면 thrown.How있다.

답변

1

이것이 바로 Session.load() 메서드의 원칙입니다. 엔터티가 세션에 이미로드되어 있지 않으면 초기화되지 않은 프록시를 엔터티에 반환합니다. Student 인스턴스를 초기화하려면 Session.get()을 사용하십시오.

+0

ok.when로드 메소드를 사용해야합니다. – user1357722

+0

기존 엔티티에 대한 참조가 필요할 때 유용합니다 (예 : 다른 엔티티에 첨부하는 경우) : Product p = session.load (Product.class, productId); cart.add (p);' –

관련 문제