私はDI用にSpringを使用し、mySQLデータベース上ではデータアクセス用にHibernateを使用しています。レコードをテーブルに挿入し、そのテーブルをクエリして集計計算を実行するビューを実行するトランザクション内にコードがあります。私が見る問題は、同じトランザクション中に挿入したばかりのレコードは、ビューの計算値に含まれていないということです。私はmySQLワークベンチで同じビューを実行し、挿入された値がビューに含まれています。誰がこれを引き起こしているか知っていますか?トランザクション(Hibernate/Spring)内でmysqlビューがリフレッシュされない
答えて
最後に、私が更新したいビューレコードのエンティティを更新するために、entityManager.refresh(Object entity)を呼び出す必要がありました。私は問題は、Hibernateが更新された元のエンティティに(データベースレベルで)依存していることを知らないため、ビューを更新する必要があることを認識できないという事実にあると思います。私は、Hibernateがビューからレコードをキャッシュしていて、flush()の後でさえ、更新が必要であることを知らないと推測します。
Hibernateは、実際にはビューがテーブルに依存しているため、テーブルが変わるたびに「ダーティ」にする必要がありますが、元のテーブルとビューは完全に無関係であるとみなします。私はHibernateにそれを認識させる方法を知らない。
ほとんどの場合、データベースへの変更はまだフラッシュされていません。 Hibernateは、あなたが挿入したテーブルと後で読んでいるビューとの間に接続があることを知らない。ビューを照会する前にentitymanager(またはセッションまたはテンプレート)をフラッシュします。
フラッシュが機能しませんでした。 entityManagerのrefreshメソッドを呼び出して、データベースからの変更を更新する必要がありました。 –
これはキャッシュの問題かどうか疑問に思います。 –
これはおそらく、MySQLのデフォルトの分離レベルがREPEATABLE READ
であることが原因です。
これは、終了そのトランザクションまでMySQL Workbenchでのトランザクションの変更が表示されないことを意味します。 SELECTを実行すると、トランザクションとしてカウントされます。
コミット(またはロールバック)を発行すると、MySQL Workbenchの変更が表示されます。
あなたはおそらく、あなたがそれを行う方法についての詳細は、マニュアルに記載されていますREAD COMMITTED
にインストールのデフォルトの分離レベルのいずれかを変更したり、READ COMMITTED
へのMySQL Workbenchのセッションの分離レベルを変更したいです。
はREAD COMMITTED、READ-UNCOMMITTEDを試してみたが、どちらも問題を解決していない。 –
- 1. MySQL/InnoDBでトランザクションがロールバックされない
- 2. Codeigniterビューがリフレッシュされない
- 3. Oracle:マテリアライズド・ビューのリフレッシュが自動的にリフレッシュされない
- 4. データベース・トランザクションでマテリアライズド・ビューをリフレッシュする
- 5. ビューがリフレッシュされないのはなぜですか? (.Net MVC)
- 6. タブ内のサブスクリーンがリフレッシュされない
- 7. Recyclerビューがフィルタでリフレッシュされない - ArrayAdapter
- 8. QMLビューで同じデータモデルの変更がリフレッシュされない
- 9. redirect_toの後にRailsビューがリフレッシュされない
- 10. iPhoneのビューがウェブコール後にリフレッシュされない
- 11. MVC 3モデルのサブミット後にビューがリフレッシュされない
- 12. Android - ビュー、チェックボックス、テキストビューがランタイムにリフレッシュされない
- 13. @トランザクションがロールバックされない
- 14. PowerBIがリフレッシュされない
- 15. ソースファイルがリフレッシュされない
- 16. spring @トランザクションJDBCテンプレートMySQLデータベースがロールバックされない
- 17. リサイクルビュー内の単一アイテム内のビューがアダプタがリフレッシュされたときにリフレッシュされないようにする
- 18. ListView/GridView内でフラグメントがリフレッシュされない
- 19. エンティティフレームワークでトランザクションがコミットされない
- 20. NHibernate MySQLトランザクションがロールバックされません
- 21. ORACLE:一部の条件でOUTER JOINでマテリアライズド・ビューが高速リフレッシュされない
- 22. RecyclerViewアダプタでProgressBarがリフレッシュされない
- 23. Visual StudioでXAMLがリフレッシュされない
- 24. Ajaxでhtmlページがリフレッシュされない
- 25. gridviewでnotifyDataSetChanged()がリフレッシュされない
- 26. MySQLトリガー内のトランザクションID
- 27. mysql、vb.net - トランザクションが動作しない
- 28. MySQLトランザクション - オークション入札INSERTがキュー内で処理されましたか?
- 29. MySQLでトランザクションが複製されないようにする方法は?
- 30. Control-F5ブラウザのリフレッシュ(Flashオブジェクトがリフレッシュされていない)
テーブルからいくつかのレコードを削除した後、セッションとクエリのビューを使用してテーブルを照会すると、これがどのように実行されるのだろうか? –