2

em.flush() が行うことは、内部 SQL 命令キャッシュを空にし、データベースに対してすぐに実行することです。 JPA/Hibernate での flush() の正しい使用

しかし、JPA em.flush() を使用して sql をデータベースに実行したところ、データベースに対してすぐに sql を実行できないことがわかりました。現在のトランザクションがコミットされる前に、データベース内のデータを見つけることができませんでした。

play フレームワークの例:

em=JPA.em();
Transaction tx=em.getTransaction();
tx.begin();  
em.persist(customer);  
em.flush();  
em.persist(address);  
tx.commit(); 

em.flush(); にまたがったときに、行 em.flush() にブレークポイントを設定しました。
その後、データベースで顧客データを見つけることができませんでした。

em.flush(); を省略した場合 現在のトランザクションがコミットされたときに、データもデータベースに入ります。

4

1 に答える 1