我很想知道Hibernate如何处理以下情况。
假设我们有一个User
实体,它具有country
属性,设置为级联持久性:
public class User {
@ManyToOne(cascade=CascadeType.PERSIST)
protected Country country;
// ...
}
现在,如果我们将分离的Country
对象分配给User
...
user.setCountry(someDetachedCountry);
...但当前会话中是否已存在具有相同身份的Country
?
提交是否会因异常而失败,或者它只是使用分离国家的身份,就好像它在会话中一样?在后一种情况下,Hibernate是否会尝试将持久性级联到分离的Country
属性,如果它们中的任何一个设置为级联?
答案 0 :(得分:2)
这不是一个罕见的问题,特别是当人们尝试使用基本类型作为标识符并将它们初始化为-1之类的值时。您将看到类似于以下内容的消息:
javax.persistence.PersistenceException:
org.hibernate.PersistentObjectException: detached entity passed to persist: Country