Самостоятельные отношения с JPA - PullRequest
3 голосов
/ 07 марта 2012

Я хочу создать таблицу Person с использованием JPA, необходимо, чтобы Person имел поле типа Person для представления родственной души.У человека может быть родственная душа (другого человека), но это не обязательно.

Я действительно запутался в том, как сделать мои отображения.Я не уверен, может ли ключевое слово это помочь мне здесь.

Я хотел бы понять, что будет лучшим подходом.Это то, что я сделал, но я думаю, что это не правильно.Может ли кто-нибудь помочь мне исправить это, а также объяснить, как должны работать эти отношения?

Версия с использованием аннотаций

   //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>

1 Ответ

6 голосов
/ 07 марта 2012

Я думаю, что это должно сработать:

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