データを取得しようとすると、遅延して例外が発生します(最後に例外が発生します)
//アプリケーションは次の DAO でデータを取得します。
public T findById(PK id) {
T result = getHibernateTemplate().get(this.type, id);
getHibernateTemplate().flush();
return result;
}
//Junit テストが serviceX.getById を呼び出します
@Transactional
public SomeObject getById(int x){
return (SomeObject) aboveDao.findById(x);
}
//JUnit を使用する
SomeObject someObj = serviceX.getById(3);
someObj.getAnotherObject().y.equals("3"); //**Exception** at this line.
//SomeObject クラスには次のプロパティがあります。
@OneToMany(cascade = { CascadeType.ALL }, fetch = FetchType.LAZY)
private AnotherObject anotherObject;
junit で anotherObject にアクセスしようとすると、次の例外が発生します
すでに試した方法 + 追加の構成
Spring アノテーション TransactionManager を使用します。<tx:annotation-driven /> は構成ファイルで指定されています。
また、JUnit の上に @Transaction(propagation = Propagation.REQUIRED) を追加しようとしましたが、問題は解決しませんでした。アプリケーションを実行すると、問題なく動作します。
JUnit でこの種の問題を解決するにはどうすればよいですか?
org.hibernate.LazyInitializationException: failed to lazily initialize
a collection of role xxxxx , no session or session was closed