我知道 em.flush() 的作用是清空内部 SQL 指令缓存,并立即执行到数据库中。 在 JPA/Hibernate 中正确使用 flush()
但是当我使用 JPA em.flush() 将 sql 执行到数据库时,我发现 sql 无法立即执行到数据库。在提交当前事务之前,我无法在数据库中找到数据。
游戏框架中的示例:
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(); 提交当前事务时,数据也会进入数据库。那么,em.flush() 有什么用?