java - 与 JPA 的自连接关系

标签 java xml jakarta-ee jpa java-ee-6

我想使用 JPA 创建一个表 Person,要求 Person 应该有一个 Person 类型的字段,以表示一个灵魂伴侣。 人可以有灵魂伴侣(另一个人),但不是强制性的。

我对如何进行映射感到非常困惑。我不确定关键字 this 是否可以帮助我。

我想了解什么是最好的方法。 这就是我所做的,但我认为是不正确的。 谁能帮我改正并解释一下这种关系应该如何运作?

使用注解的版本

   //DEFINE OneToOne Relationships (SELF JOIN-No mandatory)
    @Entity class Person {
         @Id
         private long identificator;
         private String name;
         @OneToOne(targetEntity=Person.class mappedby="this")
         private Person soulmate;
    }

使用部署描述符的版本

<persistence-unit-metadata>
    <entity-mappings>
          <entityclass = “packgagename.Person”>
            <attributes>
                <id name="identificator"/>  
                <column name="name"/>
                <one-to-one name="soulmate" targetEntity="packgagename.Person" mappedby="this"/>                
            </attributes>
     </entityclass>
    </persistence-unit-metadata>

最佳答案

我认为这应该可以解决问题:

@OneToOne(optional = true)
@JoinColumn(name = "SoulmateId")
private Person soulmate;

关于java - 与 JPA 的自连接关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9599540/

相关文章:

java - onClick Sign Up 方法包含 onClick Datepicker,如何使其工作?

java - 每个请求的 Spring session 创建策略?

iphone - 在 iPhone 应用程序 : XML or JSON? 中使用哪个更快/更容易

java - 在异步方法接缝中获取上下文参数

java - 在返回类型中使用通配符与定义的泛型类型有何不同?

java - 应用程序在启动时崩溃,尝试查看登录屏幕是否存在文件

c# - 如何在 C# 中的 XML 文件中添加 XML 属性

xml - xs :redefine and xs:override in XML schema 1. 1 之间的差异

java - 如何在 arquillian 测试中禁用 @DependsOn 注释?

jakarta-ee - EJBCLIENT000025 : No EJB receiver available for handling?