Hibernate 中的自引用一对一映射

Posted

技术标签:

【中文标题】Hibernate 中的自引用一对一映射【英文标题】:Self-Reference One-to-One mapping in Hibernate 【发布时间】:2011-09-06 18:08:17 【问题描述】:

我有一个 A 类,它的属性类型指示它是收据还是交货。收据可以映射到单个交货,反之亦然。现在考虑收据交易和交付交易是兄弟。 所以类 A 有一个 A 类型的 sibling。“A”和它的兄弟有一个 一对一的关系,如上所述。

Class A   
    private A sibling;  


<hibernate-mapping>  
    <class name="A" table="A">  
        <id name="Id" type="java.lang.Integer" column="id">  
            <generator class="native"></generator>  
        </id>  
        <one-to-one  name="sibling" class="A" lazy="proxy" />  
    </class>  
</hibernate-mapping>  

我无法找到一种方法来创建自引用的一对一映射。

【问题讨论】:

请问豆子长什么样子 【参考方案1】:

使用many-to-one 单向关联。请参阅休眠参考文档中的Unidirectional associations。

<hibernate-mapping>   
    <class name="A" table="A">   
        <id name="Id" type="java.lang.Integer" column="id">   
            <generator class="native"></generator>   
        </id>   
        <many-to-one  name="sibling" class="A" cascade="all" />   
    </class>   
</hibernate-mapping> 

您可以阅读这些答案以了解更多信息

Why use many-to-one to represent a one-to-one? How to stop Hibernate from eagerly fetching many-to-one associated object

【讨论】:

以上是关于Hibernate 中的自引用一对一映射的主要内容,如果未能解决你的问题,请参考以下文章

Hibernate自身一对多和多对多关系映射

映射一对一关联

org.hibernate.AnnotationException:referencedColumnNames 引用未映射到单个属性

在hibernate内如何配置一对一的关系

Hibernate中的一对多与多对一映射

框架 day32 Hibernate,一级缓存,关联关系映射(一对多,多对多)