2017-10-05 4 views
1

J'ai une entité comme ceci:@OneToOne faire clé primaire comme clé étrangère en même temps (printemps JPA/Hibernate)

@Entity 
public class Person { 

    @Id 
    private Long id; 

    private String firstName; 

    // Getters and setters 
} 

Le id n'est pas AutoGénéré, mais décidé par l'utilisateur.

J'ai une deuxième entité comme celle-ci:

@Entity 
public class PersonDetail { 

    @Id 
    @OneToOne 
    private Long id; // should be referred to id of Person entity 
    // or maybe private Person person; ??? 

    private String language; 
    private Integer age; 

    // Getters and setters 
} 

également dans la seconde entité, la id n'est pas AutoGénéré.

Je voudrais faire une relation @OneToOne, et je voudrais que le id de PersonDetail est la clé primaire de PersonDetail mais en même temps, il faut une clé étrangère à l'entité Person (champ id). Est-il possible avec les annotations JPA/Hibernate de Spring?

Merci beaucoup, Andrea

+0

Ce blog décrit comment faire ce que vous Voulez-vous: https://vladmihalcea.com/2016/07/26/the-best-way-to-map-a-onetoone-relationship-with-jpa-and-hibernate/ –

Répondre

0

Vous pouvez suivre ce wiki: Primary Keys through OneToOne and ManyToOne Relationships

Récrire votre entité PersonDetail à ceci:

@Entity 
public class PersonDetail { 

    @Id 
    private Long id; 

    @OneToOne 
    @PrimaryKeyJoinColumn 
    private Person person; 

    private String language; 
    private Integer age; 

    // Getters and setters 
} 
+0

Pourquoi avez-vous introduit un champ "id" séparé? dans 'PersonDetail'? – gavenkoa