我使用 Hibernate 作为 JPA 实现。在我的 vaadin 应用程序EntityManager
中是请求范围的(以避免不受控制地提交累积的更改)。我将分离的实体存储在会话中,并在每次请求中需要它时重新附加它(每个请求一次,我使用 进行检查em.contains()
)。实体引用另一个实体,一个引用另一个实体,所以最后我有三层级联所有树图,其中所述会话范围的实体作为根。
这工作正常,直到我有全新的大树和全新的节点(总共超过 5000 个项目) - Hibernate 尝试在合并时找到每个新节点(我可以在我的日志中看到它的尝试 - 许多select
不存在的 id)。这是一个错误还是只是我滥用了 JPA?
更新
我不使用@Version
字段。
更新*
在我的应用程序中,我使用相同的方法来存储所有实体子树,而不管级联关系的结构如何,因此我无法区分不同的用例,因此我使用了合并。