2016-09-15 4 views
0

중첩 :Hibernate는 내가 아래와 같은 모델 (의사) 프로젝트가 지연로드 및 LazyInitializationException이

: 나는 이런 식으로 뭔가를 얻으려고하면 이제

class Transaction{ 

     @OneToMany(mappedBy="transaction", fetch = FetchType.LAZY) 
     private Set<TransactionVersion> transactionVersions; 
} 

class TransactionVersion{ 

     @ManyToOne(fetch = FetchType.EAGER) 
     @JoinColumn(name="ID_TRANSACTION_VERSION") 
     private Transaction transaction; 

     @ManyToOne(fetch = FetchType.EAGER) 
     @JoinColumn(name="ID_CLIENT_VERSION") 
     private ClientVersion clientVersion; 
    } 

    class ClientVersion{ 

     @OneToMany(mappedBy="clientVersion",fetch=FetchType.Lazy) 
     private Set<TransactionVersion> transactionVersions; 

     @OneToMany(mappedBy="client", fetch=FetchType.LAZY) 
     private Set<Client> clients; 
    } 

을 ((0)되는 단지 예를 얻을) 내가 betwee 관계에 FetchType을 변경하는 경우에는 세션이나 세션이

폐쇄되지 않았다 ClientVersion.clients :
transaction.getTransactionVersions().get(0) 
.getClientVersion().getClients() 

나는 LazyInitializationException이가 게으르게 역할의 컬렉션을 초기화하지 못했습니다 수 n ClientVersion과 Client는 EAGER로 작동하지만 느슨하게로드하는 것을 선호합니다.

세션을 최대 절전 모드로 전환 할 수 있다면 수동으로 콜렉션을 초기화 할 수 있지만, 하이버 네이트가 스스로 할 수 있도록 맵핑 할 수있는 방법이 있습니까? 관련된 객체를 얻고 싶을 때 내 사용자 정의 메소드를 사용하고 싶지 않습니다. 수요에 FetchType.LAZY 당신 데이터를로드

답변