@Transactional
annotation을 사용하여 서비스 계층에서 트랜잭션을 관리하기 위해 Spring을 사용하고 있습니다. 열심히로드 된 컬렉션에는 적합하지만 지연로드에는 적합하지 않습니다.Hibernate와 Spring, Lazy 모드에있는 콜렉션을로드하십시오.
OSV 패턴을 사용할 수 없습니다. 내 응용 프로그램은 독립형 데스크톱 클라이언트 응용 프로그램입니다.
그래서 나는 해결책에 대해 생각하고,이는 내가하려고 무엇을 : 내가 가지고있는
public abstract class TransactionTask {
public TransactionTask() {
}
public abstract void job();
}
을 내 서비스 :
@Transactional
public void doJob(Transactiontask tt){
tt.job();
}
그리고는 어떻게 사용
myService.doJob(new TransactionTask() {
@Override
public void job() {
//lazy code here
}
});
세션이 doJob 메소드에서 열려 있기 때문에이 코드가 작동 할 것으로 예상됩니다 (트랜잭션으로 표시됨).),하지만 작동하지 않습니다 ... 예외는 no session or session was closed
입니다. 이 코드가 작동하지 않는 이유와 필요에 따라 컬렉션을로드하는 방법은 무엇입니까?
컬렉션을로드하는 지정된 메소드로 서비스를 작성하고 싶지는 않습니다. 솔루션이 아닙니다.