2

問題があります:

スレッドにバインドされた Hibernate セッションはありません。構成により、ここで非トランザクション セッションを作成することはできません。

私のプロジェクトをテストするとき。

私はSpring 2.0.7(これはそのプロジェクトでは必須です)とHibernate 3を使用しています。

  • SessionFactory の定義

  • トランザクションマネージャーが定義されています(セッションファクトリーが注入されています)

  • <tx:annotation-driven transaction-manager="transactionManager"/>- オンになっているトランザクションの注釈

テストに次の注釈を付けました。

@テスト

@トランザクション

および継承された AbstractAnnotationAwareTransactionalTests

=> このエラーが発生しました: スレッドにバインドされた Hibernate セッションがありません。構成では、非トランザクションのセッションをここで作成することはできません

私がそれを克服できる唯一の方法は、使用することです:TransactionStatus transaction = transactionManager.getTransaction(transactionDefinition);

電話する前にテスト中

sessionFactory.getCurrentSession().save(myObject);

助言がありますか?またはそれ以上:どのように機能しますか?トランザクション セッションを作成できないのはなぜですか? 休止状態セッションがバインドされていないのはなぜですか? 私はそれについて何かを読みましたが、それはまだ私には明らかではありません. 私はそれを機能させるためにあらゆることをしたと思いますが、明らかに十分ではありませんでした。

事前にt​​hx、

ステピック

4

2 に答える 2

0

私の場合、 abase-packageが見逃されました。次のようなもの:

<context:component-scan base-package="com.companyname" />
于 2015-06-23T13:14:06.163 に答える
0

問題は、AbstractAnnotationAwareTransactionalTests からクラスを拡張することにあると思います。継承を削除してみてください (それがなくても動作するはずです)。または、 AbstractTransactionalJUnit4SpringContextTests クラスからクラスを拡張してみてください。

ここで同様の投稿を見ることができます。

于 2012-07-24T08:57:27.410 に答える