【发布时间】:2013-10-12 16:53:52
【问题描述】:
我知道 em.flush() 的作用是清空内部 SQL 指令缓存,并立即执行到数据库中。 Correct use of flush() in JPA/Hibernate
但是当我使用 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() 有什么用?
【问题讨论】: