Spring の @Transaction に問題があります。基本的に、次のメッセージでトランザクションは作成されません。
進行中のトランザクションがないため ID 挿入を遅らせる
問題の完全な説明をSpring AOPフォーラムに投稿しました
http://forum.springsource.org/showthread.php?132612-Transaction-management
どんな提案でもいただければ幸いです!
ステファノ
Spring の @Transaction に問題があります。基本的に、次のメッセージでトランザクションは作成されません。
進行中のトランザクションがないため ID 挿入を遅らせる
問題の完全な説明をSpring AOPフォーラムに投稿しました
http://forum.springsource.org/showthread.php?132612-Transaction-management
どんな提案でもいただければ幸いです!
ステファノ
解決策を見つけました。
問題はconfiguratoinにありました。私は2つの要素を追加context:spring-configured
しましたが、context:load-time-weaver
それは2つの異なることを意味します。最初のものはAspectJコンパイル時ウィービングをアクティブにし(私は理解していませんでした)、2番目のものはAspectJロード時間ウィービングをアクティブにします。この2つの要素はうまく連携していないと思います。
コンパイル時ウィーバーを使用することにしました。(少し苦労した後...)外部jarは、まだビルドされていないという理由だけで、この構成ではウィーブされていないことがわかりました。
解決する最も簡単な方法は、ノード
aspectj-maven-plugin
の下に追加する(POM.xml内の)構成を変更することです。configuration
<weaveDependencies>
<weaveDependency>
<groupId>GROUP-ID</groupId>
<artifactId>ARTIFACT-ID</artifactId>
</weaveDependency>
</weaveDependencies>
あなたが織る必要があるすべてのアーティファクトのために。
これで、トランザクションは正常に機能します。
@ラルフ:お時間をいただきありがとうございます!
よろしく、
ステファノ
コードでは、次のようにサービスを定義しました。
@Service
@Configurable
public class ServiceImpl<T> implements Service<T> {
@Override
@Transactional
public T save(T entity) {
....
}
}
@Configurable
注釈を使用する理由がわかりません。それらが必要ない場合 (つまり、 new を介してこのサービスのインスタンスを作成しない場合) は、それらを削除します。
その理由は、春のドキュメントが@Configurable
インジェクションを有効にしていると言っているのを覚えているからですが、@Configurable