2

データを取得しようとすると、遅延して例外が発生します(最後に例外が発生します)

//アプリケーションは次の 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
4

2 に答える 2

0

これはあなたに役立つかもしれませ

于 2013-10-01T18:03:44.563 に答える