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

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

我试图让我的新实体对象与提交给数据库的内容同步。我最初放入了flush,我认为它解决了问题,但在更大的测试中问题又出现了。当这个实体被提交到数据库时,会发生影响另一个表/实体的触发器,我需要反映这一点。我该怎么办?

4

2 回答 2

1

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

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

于 2012-04-18T01:48:45.180 回答
0

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

于 2012-04-18T01:48:07.320 回答