我有一个拥有自定义主键的实体。 首先,我删除此实体,然后使用相同的主键重新创建此实体。 这导致commit / flush上的唯一约束异常。 作为一种解决方法,我在delete和create操作之间调用flush。 有没有办法正确/更好地做这些事情,即没有在实体经理上调用同花顺?
谢谢, 曼弗雷德
答案 0 :(得分:0)
em.remove( yourEntity )
命令会将您的实体预订为从持久性上下文中删除,然后从数据库中删除,但它不会立即生效。我可以想象,当您持久保存新实体时,从持久性上下文和数据库中删除还没有发生。
您可以尝试在remove()命令后使用自定义JPQL查询(如"DELETE FROM YourEntity ye WHERE ye.primary1 = :primary1 AND ye.primary2 = :primary2... whatever;"
)删除此实体。我假设这会立即从持久化上下文中删除你的实体,但我不确定。试一试,让我们知道:)