【问题标题】:Hibernate persistence by reachability & detached objects通过可达性和分离对象休眠持久性
【发布时间】:2011-08-30 13:37:03
【问题描述】:

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

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

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

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

user.setCountry(someDetachedCountry);

...但是当前会话中已经存在具有相同标识的Country

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

【问题讨论】:

  • 为什么不在单元测试中尝试呢?我猜它失败了,除了“已经有一个具有这个 id 的对象”之外。

标签: hibernate jpa orm hibernate-mapping


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2012-01-07
    • 1970-01-01
    • 2011-02-04
    • 2011-03-30
    • 2012-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-03
    相关资源
    最近更新 更多