我有以下代码,我从前端调用
public Login update(Login i) {
em = emf.createEntityManager();
em.getTransaction().begin();
Login result=infoDAO.update(i);
em.getTransaction().commit();
em.close();
return result;
}
public Login update(Login i) {
return em.merge(i);
}
我有
private static final EntityManagerFactory emf = Persistence.createEntityManagerFactory("HRTool-JPA");
protected EntityManager em=emf.createEntityManager();
正在调用这些方法并且值正确地传递给DB(我正在使用Apache derby)但是只有在断开连接并重新连接到DB之后,我才能在数据库中看到新的更改值。合并后我错过了一些步骤吗?我是JPA的新手并且对同一个
的任何建议表示感谢答案 0 :(得分:2)
默认情况下,Hibernate将请求保留在其缓存中,Hibernate决定何时执行它们。
您可以尝试在em.merge()之后添加em.flush() 它将执行缓存中剩余的所有请求。