Java Hibernate:如何避免逐出/分离子元素

Java Hibernate:如何避免逐出/分离子元素,java,hibernate,Java,Hibernate,我在一个旧的JavaEE5项目中使用Hibernate,在Address和Person实体之间有一个简单的manytone关系 关于人员类别: @ManyToOne @Cascade(value = {CascadeType.MERGE, CascadeType.PERSIST}) private Address address; 我正在尝试复制一个人的记录,而不使用Java的clone方法。因此,我从数据库中检索它,在Person实体上调用execute(),将其与会话分离,重置其ID并持久

我在一个旧的JavaEE5项目中使用Hibernate,在
Address
Person
实体之间有一个简单的manytone关系

关于人员类别:

@ManyToOne
@Cascade(value = {CascadeType.MERGE, CascadeType.PERSIST})
private Address address;
我正在尝试复制一个人的记录,而不使用Java的
clone
方法。因此,我从数据库中检索它,在Person实体上调用
execute()
,将其与会话分离,重置其ID并持久化

问题>
已分离实体传递到持久化:地址

为什么逐出也要分离地址实体?我怎样才能避免呢?我不想创建另一个地址记录,我想使用应该附加到会话的现有地址记录,因为我没有在多通关系上使用Cascade.execute或Cascade.ALL


与此同时,我正在驱逐此人,重新附加地址(按ID查找),然后调用persist。它工作得很好,只是想知道是否有更好的解决方案。

您可以从
地址
中删除
CascadeType.PERSIST
属性吗?只要在持久化一个人时不要持久化地址。或者干脆
合并
而不是
持久化
重复的人