@PersistenceContext(unitName = "ServerLayerPU")
protected EntityManager m_entityManager;
m_entityManager.persist(entity);
m_entityManager.flush();
我试图让我的新实体对象与已提交给db的内容同步。我最初放入冲洗,我认为解决了问题,但问题在更大的测试中再次出现。当此实体提交给db时,会发生影响另一个表/实体的触发器,我需要反映它。我应该怎么做呢?
答案 0 :(得分:1)
flush()
指示实体管理器检测对托管实体所做的所有更改,并将它们发送到数据库。它不提交事务,也不会导致从数据库中重新读取数据。 (Hibernate如何知道要重新读取哪些数据?如果触发器修改了它插入的数据,你不希望它重新读取所有内容吗?)。
您可以使用refresh()
重新阅读实体。
答案 1 :(得分:0)
当数据库触发器更改记录的状态时,这些更改将不会反映在hibernate会话中的相应实例中。您必须使用session.refresh()使用基础数据库中的最新值更新这些实例