私は簡単な質問があります。 @ ManyToOneアノテーションから生じる外部キー関係に名前を付けるにはどうすればよいですか?JPA:DBの外部キーに名前を付けますか?
答えて
外部キーで使用される列の名前を指定する場合は、@JoinColumn
注釈と@ManyToOne
注釈を使用して、外部キーを作成するために使用される列の名前を指定できます。 @JoinColumn
注釈のname
属性の値は、JPAプロバイダによって使用され、表の列名をエンティティの属性にマップします。
ただし、作成された外部キー制約の名前は設定できません。これを書いている時点では、ORマッピングファイル内のJPAアノテーションまたは構成パラメータを使用して外部キー制約の名前を指定することはできません。外部キー制約の名前を変更する必要がある場合は、JPAプロバイダに依存するのではなく、DDL文を自分で作成する必要があります。
JPA 2.1以降では、@ForeignKey注釈で外部キーを定義することができます。
残念ながら、名前を変更するだけではあまり役に立ちません。 FKのカスタム名を指定する場合は、FKのSQL定義も指定する必要があります。それは少なくともEclipseLink 2.5.0で動作する方法です。
JPA 2.1を使用すると、ちょうどforeignKey annotationでこれを行うことができます。
import javax.persistence.ForeignKey;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
@ManyToOne
@JoinColumn(name = "company_id", nullable = false, foreignKey = @ForeignKey(name="FK_COMPANY__ROUTE"))
private Company company;
を私は@ForeignKeyが@JoinTablesでは動作しませんか私にはわからないと思いますdeprecated hibernate equivalent
これは私が探していた答えです、ありがとう、私はManyToMany関係で動作させることができませんでしたが、ManyToOneでは魅力的に機能します。 – hectorg87
と混同しないでください私は@ JoinTable-> foreignKeyと@ JoinColumn-> foreignKeyでそれを試してみた
- 1. Asp.net mvcエンティティフレームワークのコード最初に別の名前の外部キーを関連付けます
- 2. 外部キーの索引付け
- 3. Innodbは外部キーを受け付けません
- 4. 制約の名前を知らずに外部キーを削除しますか?
- 5. ActiveRecord - 外部キーと異なる命名規則を関連付ける?
- 6. 名前付きクエリに外部プロパティを設定する
- 7. タイプに名前を付けません
- 8. どのようにViewModelクラスに名前を付けますか?
- 9. テーブルと関連付けるMySQLの外部キー関係とmysql_insert_id
- 10. 名前を付けるガード
- 11. テンプレートの名前付け
- 12. ファイルの名前付け、Python
- 13. アプリケーションメインエンティティの名前付け
- 14. RESTfulパスの名前付け
- 15. PHP:JSONオブジェクトの配列に名前を付けますか?
- 16. EC2インスタンスにCloudFormationテンプレートの名前を付けますか?
- 17. 含める/除外する列挙型の名前付け
- 18. Rails:外部キーと索引付け時期
- 19. 変更の外部キー列名
- 20. EJB3NamingStrategyとImprovedNamingStrategyの外部キー命名
- 21. 外部キー名の変更方法は?
- 22. Postgresはカラム名の前にテーブルエイリアスを受け付けません
- 23. ケース式に名前を付けますか?
- 24. ApacheログにIPで名前を付けますか?
- 25. 外部キーに関連付けられていないプライマリキーレコードを取得する
- 26. 外部キーであるコンポーネント列の名前を変更する方法は?
- 27. 作成時投稿に2つの外部キーを関連付ける方法
- 28. 名前に名前を関連付けるExcel 2007
- 29. URLでファイルに名前を付ける
- 30. Entity Framework 5コードを最初に使用したキーの名前付け
多分それは質問で明らかではなかった? – giulius