2011-05-10 47 views
0

我正在Seam项目上工作,并有以下问题 - 有一个Ajax编辑窗体和许多与此窗体的交互影响(变异)基础实体,并立即在数据库中更改,但我想' t仅当用户按下“保存”按钮时,这些更改才会保留在数据库中。我正在考虑脱离实体来实现这一点,但想知道如何(也寻找更聪明的解决方案)。Seam - 如何去实体

回答

3

您对实体所做的更改会立即反映出来,使其与数据库同步。要分离实体,您可以使用entityManager.detach(object)entityManager.clear(),但这会分离所有被管实体。

EntityManager的flush模式是FlushModeType.AUTO默认,而是试图FlushModeType.COMMIT其中的变化只在明确的承诺/冲洗&然后用entityManager.flush()的持久化上下文对底层数据库同步刷新。

+0

entityManager.detach(对象)可能是一件很酷的事情,但可用于Java 6以后,我的项目使用java 5. – Jeriho 2011-05-11 09:06:19

+0

尝试手动管理事务(BMT),而不是使用CMT,所以您将能够在实体进行更改后需要。 – 2011-05-11 16:52:44