sql >> データベース >  >> RDS >> Mysql

新しいEntityManagerがMySQLから古いデータを取得することがある

    何らかの理由で、暗黙のトランザクションentityManagerが参加するのは新しいトランザクションだと思いました。ただし、Hibernateドキュメント 状態:「トランザクション内にエンティティマネージャーを作成すると、エンティティマネージャーは自動的に現在のトランザクションに参加します。」

    したがって、明らかに別のトランザクションがすでに実行されており(驚くことではありません)、フェッチの結果は、すでに読み取ったものに応じて変化します(データベースがREPEATABLE-READモードで実行されているため)。

    短期的には、コードをスイープして、トランザクションが欠落している場合は明示的にbegin()トランザクションを実行します。長期的には、Spring Transactionsを調べて、より確実な方法でトランザクションを管理する方法を確認します(コメントで提案されています)。




    1. Java Oracle localhost接続エラー(ORA-12505)

    2. 1つのフォームを使用して複数のテーブルにデータを挿入します

    3. querydslでmysqlのネストされた/内部関数を呼び出します

    4. MySQL/PHPで表示されるレコードを繰り返さないでください