トランザクションが開始され、途中(コード内)新しいトランザクションを開始するために呼び出されます。内部トランザクションが完了すると、データはデータベースに保持されますが、データは外部トランザクションからは見えません。ネストされたトランザクションユースケースの外部トランザクションは、データベース(JPA、MySQL、Spring Framework、およびHibernate)に保持されている更新が表示されません。
はここ
@Transactional(readOnly = true)
public void doSomething() {
// Some stuff happens here
doMoreStuff();
// Some more stuff happens here.
}
@Transactional(propagation = Propagation.REQUIRES_NEW)
public void doMoreStuff() {
...
}
「doMoreStuff」方法「はdoSomethingの」方法は、その更新されたデータを参照する必要があり、その後、データベース内のいくつかのデータを更新...コードスニペット(複数可)ですが、そうではありません。例えば、 "doMoreStuff"はbooleanをfalseからtrueに設定し、永続化します。 "doSomething"メソッドでは、値がfalseであるとしか見えません。
提案がありますか?
しかし、私は現在、 "標準JPAはカスタム分離レベルをサポートしていません - JPA実装に特別なJpaDialectを使用しています"を得ています。 – codecraig
...それは本当ですが、JPAはそれをサポートしていません。 https://jira.springframework.org/browse/SPR-5012。 mysqlでグローバルtxレベルを設定する必要がありました。 グローバルトランザクション分離レベルのコミットがコミットされました。 これは働いていたようです...ただ設定をスティックするように私のmysql設定ファイルを調整する必要があります:)感謝! – codecraig