2017-09-02 14 views
0

私は次の記事を読んでいた。休止所有エンティティ側で共有プライマリキー

http://websystique.com/hibernate/hibernate-one-to-one-bidirectional-with-shared-primary-key-annotation-example/

と私は二つのことで混乱していた:

の1-エンティティの所有側です。記事から: "ヒューバーネイトに、その関係を管理するのは学生クラスだと教えてください。"

しかし学生のエンティティにはmappedByというアノテーションが付けられており、mappedByでアノテーションされたエンティティは逆の側であることがわかります。誰でもこれを説明できますか?

@Entity 
@Table(name = "STUDENT") 

public class Student { 


@Id 
@GeneratedValue 
@Column(name = "STUDENT_ID") 
private long id; 

@Column(name = "FIRST_NAME") 
private String firstName; 

@Column(name = "LAST_NAME") 
private String lastName; 

@Column(name = "SECTION") 
private String section; 

@OneToOne(mappedBy="student", cascade = CascadeType.ALL) 
private Address address; 

2 - このIDは外部キーですか? @PrimaryKeyJoinColumnはAddressエンティティで使用されます。つまり、Address Idがプライマリおよび外部キーです。彼らは同じ例を持っていますが、その一方向の次の資料に:

http://websystique.com/hibernate/hibernate-one-to-one-unidirectional-with-shared-primary-key-annotation-example/

あなたは@PrimaryKeyJoinColumnの場所が変更されて気づくことができ、まだアドレスが外部キーです。 Idは外部キーになります。

答えて

1
  1. この例では、アドレスは実際に関連付けの所有側です。あなたは間違いなく正しいです:mappedByのattrobuteを持つ側は反対側です。

  2. Addressは所有者側であり、そのIDも結合列であるため、ForeignKeyである必要があります(ManyToOne結合の結合列もFKである必要があります)。この選択は、生徒がいなくても住所が存在できないことを意味します。 http://fruzenshtein.com/one-to-one-unidirectional-primary-key/ 彼らは外部キーを言う:私はちょうどこの記事では2について確認するために、1つのより多くの情報が必要

+0

Biographyクラスのauthor_idです。あれは正しいですか?それはAuthorクラスのidでなければなりません。どうか確認していただけますか? –

関連する問題