hibernate与我的数据库不同步

时间:2012-04-17 23:07:29

标签: mysql hibernate

  @PersistenceContext(unitName = "ServerLayerPU")
  protected EntityManager m_entityManager;

   m_entityManager.persist(entity);
   m_entityManager.flush();

我试图让我的新实体对象与已提交给db的内容同步。我最初放入冲洗,我认为解决了问题,但问题在更大的测试中再次出现。当此实体提交给db时,会发生影响另一个表/实体的触发器,我需要反映它。我应该怎么做呢?

2 个答案:

答案 0 :(得分:1)

flush()指示实体管理器检测对托管实体所做的所有更改,并将它们发送到数据库。它不提交事务,也不会导致从数据库中重新读取数据。 (Hibernate如何知道要重新读取哪些数据?如果触发器修改了它插入的数据,你不希望它重新读取所有内容吗?)。

您可以使用refresh()重新阅读实体。

答案 1 :(得分:0)

当数据库触发器更改记录的状态时,这些更改将不会反映在hibernate会话中的相应实例中。您必须使用session.refresh()使用基础数据库中的最新值更新这些实例