0
  @PersistenceContext(unitName = "ServerLayerPU")
  protected EntityManager m_entityManager;

   m_entityManager.persist(entity);
   m_entityManager.flush();

新しいエンティティオブジェクトをデータベースにコミットされたものと同期させようとしています。私はもともと問題を解決したと思ったフラッシュを入れましたが、より大きなテストの間に問題が再発しました。このエンティティがデータベースにコミットされると、別のテーブル/エンティティに影響を与えるトリガーが発生します。これを反映する必要があります。これについてはどうすればよいですか?

4

2 に答える 2

1

flush()管理対象エンティティに対して行われたすべての変更を検出し、それらをデータベースに送信するようにエンティティマネージャに指示します。トランザクションをコミットしたり、データベースからデータを再読み取りしたりすることはありません。(Hibernateはどのデータを再読み取りするかをどのように知るのでしょうか?トリガーが挿入したデータを変更した場合に備えて、すべてを再読み取りすることは期待できませんか?)

でエンティティを再読み込みできますrefresh()

于 2012-04-18T01:48:45.180 に答える
0

データベーストリガーがレコードの状態を変更すると、これらの変更は休止状態セッションの対応するインスタンスに反映されません 。session.refresh()を使用して、基になるデータベースの最新の値でこれらのインスタンスを更新する必要があります。

于 2012-04-18T01:48:07.320 に答える