2017-05-02 10 views
1

hibernate-jpa-api-2.0では、oneToOneの関係で@PrimaryKeyJoinColumnを使用して外部キーの名前を指定できますか?外部キーの名前を持つ@PrimaryKeyJoinColumn

私はフォローを試みましたが、うまくいかないようです。

@OneToOne(optional = false, fetch = FetchType.LAZY) 
@PrimaryKeyJoinColumn(name = "CARID") 
@ForeignKey(name = "FK_CAR_CORP") 
public CarEntity getCar() { 
    return car; 
} 

答えて

0

mappedBy属性は、双方向関係にのみ必要です。注釈でこの要素を省略できます。これは、ソースエンティティで、関係を定義するターゲットエンティティ上のフィールド(@JoinColumnを含む)をポイントするために使用されます。

@ JoinColumnアノテーションは、2つのテーブルを結合するために使用する列を定義するbillSimpleEntryフィールドに配置する必要があります。

外部キーマッピング方式を使用するOneToOneまたはManyToOneマッピングの結合の場合、外部キー列はソースエンティティまたは埋め込みテーブルのテーブルにあります。ここ はコードの例です:

@OneToOne(cascade=CascadeType.ALL,fetch = FetchType.EAGER) 
@JoinColumn(name="id") // use actual column name 
private ClassName className; // use class name 
+0

外部キーのNAMEを指定する必要があります。スキーマの生成に使用されているものと同じです。 "ADD CONSTRAINT ..."あなたの答えはそれではありません。 –

+0

PrimaryKeyJoinColumnアノテーションは、他のテーブルと結合するための汎用名を持つ外部キーとして使用されるプライマリキー列を指定しますが、FK制約のためのより一般的な名前を使用します。 – skanso

0

それは2.1

Since: 
    Java Persistence 2.1 

hereにリリースのドキュメントごとに、私は、@ForeignKeyは休止状態-JPA-API-2.0のために働くだろうとは思わないドキュメント

です
+0

okありがとう@Bhushan Uniyal、おそらく埋め込みエンティティを使用して – skanso

0

2つの@ForeignKey注釈が使用することができますがあります。

org.hibernate.annotations.ForeignKey (Hibernate annotation) 
javax.persistence.ForeignKey (JPA annotation) 

Hibernate 4(最終版でさえ)は処理しないことがあります。恐らくバグの原因となるのはjavax.persistence.ForeignKeyアノテーションです。

例えば、Hibernate 4.3.11では、単方向関連の@OneToMany部分でorg.hibernate.annotations.ForeignKeyを使用する必要があります。また、双方向関連の@ManyToOne部分にjavax.persistence.ForeignKeyを使用できます。

したがって、Hibernate org.hibernate.annotations.ForeignKeyアノテーションを使用できます。

関連する問題