通过可达性和Hibernate持久化分离的物体

时间:2011-08-30 13:37:04

标签: hibernate jpa orm hibernate-mapping

我很想知道Hibernate如何处理以下情况。

假设我们有一个User实体,它具有country属性,设置为级联持久性:

public class User {
    @ManyToOne(cascade=CascadeType.PERSIST)
    protected Country country;
    // ...
}

现在,如果我们将分离的Country对象分配给User ...

user.setCountry(someDetachedCountry);

...但当前会话中是否已存在具有相同身份的Country

提交是否会因异常而失败,或者它只是使用分离国家的身份,就好像它在会话中一样?在后一种情况下,Hibernate是否会尝试将持久性级联到分离的Country属性,如果它们中的任何一个设置为级联?

1 个答案:

答案 0 :(得分:2)

这不是一个罕见的问题,特别是当人们尝试使用基本类型作为标识符并将它们初始化为-1之类的值时。您将看到类似于以下内容的消息:

javax.persistence.PersistenceException: 
org.hibernate.PersistentObjectException: detached entity passed to persist: Country