我在旧的JavaEE 5项目中使用Hibernate在std::unordered_map
和Address
个实体之间有一个简单的ManyToOne关系。
在Person类上:
Person
我试图在不使用Java的@ManyToOne
@Cascade(value = {CascadeType.MERGE, CascadeType.PERSIST})
private Address address;
方法的情况下复制一个Person记录。所以我从数据库中检索它,在Person实体上调用clone
以将其从会话中分离出来,重置其ID并保持持久。
问题> evict()
为什么evict还会分离Address实体?我怎么能避免这种情况?我不想创建另一个地址记录,我想使用它应该附加到会话的现有记录,因为我没有使用Cascade.EVICT或Cascade.ALL关于ManyToOne关系。
与此同时,我正在驱逐人员,重新连接地址(通过ID查找),然后调用持久性。它的工作正常,只是想知道是否有更好的解决方案。