【发布时间】:2011-09-03 06:32:50
【问题描述】:
我有一个具有自定义设置主键的实体。 首先我删除了这个实体,然后我用相同的主键重新创建了这个实体。 这会导致提交/刷新时出现唯一约束异常。 作为一种解决方法,我在删除和创建操作之间调用刷新。 有没有办法正确/更好地做这些事情,即不调用实体管理器上的刷新?
谢谢, 曼弗雷德
【问题讨论】:
我有一个具有自定义设置主键的实体。 首先我删除了这个实体,然后我用相同的主键重新创建了这个实体。 这会导致提交/刷新时出现唯一约束异常。 作为一种解决方法,我在删除和创建操作之间调用刷新。 有没有办法正确/更好地做这些事情,即不调用实体管理器上的刷新?
谢谢, 曼弗雷德
【问题讨论】:
em.remove( yourEntity ) 命令将预订您的实体以从持久性上下文中删除,然后从数据库中删除,但它不会立即生效。我可以想象,当您持久化新实体时,还没有从持久化上下文和数据库中删除。
您可以尝试在 remove() 命令后使用自定义 JPQL 查询(如 "DELETE FROM YourEntity ye WHERE ye.primary1 = :primary1 AND ye.primary2 = :primary2... whatever;")删除此实体。我假设这会立即从持久性上下文中删除您的实体,但我不确定。试一试,让我们知道:)
【讨论】: