2016-12-24 7 views
1

私は2つのエンティティを持っています。 ユーザー:Hibernate:Forignキーをプライマリキーにする必要があります

@Entity 
public class User { 

    @Id 
    @GeneratedValue(strategy = GenerationType.SEQUENCE) 
    private long user_id; 

    @Column(unique = true) 
    private String email; 
    @Column 
    private String password; 
    @Column 
    private String name; 
    @Column 
    private String surname; 
    .... 
} 

ゲスト:

@Entity 
public class Guest { 
    @Id 
    @OneToOne 
    @JoinColumn(name = "user_id_fk") 
    private User user; 

    private int visits; 
    ...  
} 

あなたが推測できるように、私は私の外部キーのuser_id(user_id_fkが)私のゲストの主キーになりたいが、このコードは動作していないようです。 ご協力いただければ幸いです。

答えて

1

@PrimaryKeyJoinColumnは(私はよく分からない)働くかもしれ

あなたのゲストクラス:

@Entity 
public class Guest { 
    @OneToOne 
    @PrimaryKeyJoinColumn 
    private User user; 

    private int visits; 
    ...  
} 

しかし、あなたはありません@JoinColumnに外国inheritance

+0

私は実装することにより、私の問題を解決することができましたあなたが提案した継承。私は相続について考えなくても間違った場所で解決策を探していました。 –

+0

ありがとう、私は数時間の仕事を節約しました。 –

0

言及列名を実装するためになるはずですキー制約名。

@OneToOne 
@JoinColumn(name = "user_id") 
private User user; 
0

Y.タリオンのおかげで、私は私の問題を解決することができました。これが役に立つかもしれません誰のため

は、私はここに私のコードを投稿しています:

ユーザー:

@Entity 
@Inheritance(strategy=InheritanceType.TABLE_PER_CLASS) 
public class User { 

    @Id 
    @GeneratedValue(strategy = GenerationType.SEQUENCE) 
    private long user_id; 

    @Column(unique = true) 
    private String email; 
    @Column 
    private String password; 
    @Column 
    private String name; 
    @Column 
    private String surname; 
    //...constructors, getters and setters... 
} 

ゲスト:

@Entity 
public class Guest extends User { 

    private int visits; 

    @ManyToMany 
    private List<Guest> friends; 

    public int getVisits() { 
     return visits; 
    } 

    public void setVisits(int visits) { 
     this.visits = visits; 
    } 

    public List<Guest> getFriends() { 
     return friends; 
    } 

    public void setFriends(List<Guest> friends) { 
     this.friends = friends; 
    } 
} 
関連する問題