0

PersonとPersonDataの一方向の一対一の関係を達成するにはどうすればよいですか?一方向の一対一の関係

他のエンティティの主キーを指定する @JoinColumnアノテーションで @OneToOne注釈を使用して
@Entity 
public class Person { 
    @Id 
    @GeneratedValue(strategy=GenerationType.IDENTITY) 
    private Long id; 

    // @OneToOne...? 
    // ...? 
    private PersonData data; 
} 

@Entity 
public class PersonData { 
    @Id 
    private long personId; 
} 

答えて

0

@OneToOne(fetch=FetchType.LAZY) 
@JoinColumn(name="personId") 
private PersonData data; 
0

あなたはPersonData表の主キーを共有しているために@PrimaryKeyJoinColumnを使用することができます。詳細については

@Entity 
public class Person implements Serializable { 

    @Id 
    @GeneratedValue(strategy= GenerationType.AUTO) 
    private Long id; 

    @OneToOne(cascade = CascadeType.PERSIST, mappedBy = "personId") 
    @PrimaryKeyJoinColumn 
    private PersonData data; 

} 

@Entity 
public class PersonData implements Serializable { 

    @Id 
    @OneToOne(targetEntity = Person.class) 
    private Long personId; 
} 

https://github.com/abhilekhsingh041992/spring-boot-samples/blob/master/jpa/src/main/java/example/springboot/jpa/domain/Person.java

https://github.com/abhilekhsingh041992/spring-boot-samples/blob/master/jpa/src/main/java/example/springboot/jpa/domain/PersonData.java

+0

これは双方向です。 PersonDataがPersonについて知ることを望まない。これはid(personId)によってのみ参照されるべきです。 – aandeers

+0

私はそれを知らなかった。私は答えを編集しました。それが動作するかどうかを確認してお知らせください。 –

+0

あなたの答えをありがとうが、それを働かせなかった – aandeers

関連する問題