JPAにおける関連関係マッピング(feat.repreated column in mapping for entity error)
-基本関連マッピング
我々は通常、JPAを使用して関連関係をマッピングする際に
@ManyToOne
(複数対1の関係であれば)と@JoinColumn
言語を使用する.例えば、
User
表とProduct
表があるとする.また、2つのテーブルを別のテーブルで複数のテーブルと多対一の関係にする場合は、次のように記述できます.
@ManyToOneは、テーブルが複数対1の関係であることを示します.
@JoinColumnを使用して、特定のテーブルのpkを外部キーとして宣言できます.
結果として生じるDDLは以下のようになります.
参照テーブルの列にはuser idとproduct idが含まれます.
2つのフィールドが設定されていることを外部キーで確認できます.
ここで注意したいのは、@JoinColumnのnameプロパティでは、キーのカラム名を簡単に参照するわけではありません.
-2つ以上のカラムが1つのテーブルを参照している場合。
を見てください.
1つのテーブルには
User
のテーブルがあり、2つの柱はProduct
のテーブルを参照してください.この場合、上図のように
@JoinColumn
語種を設定して返すと以下のエラーが発生します.... Repeated column in mapping for entity
の部分により,同じ色が2回マッピングされたと予測できる.解決策
この問題を解決するためには,
@JoinColumn
言語テストの属性が何を意味するかを知る必要がある.- name
:マッピングする外部キーの名前- referencedColumnName
:外部鍵が参照するターゲットラベルのpk名すなわち、上記のproduct idやuser idなどの実際のpk名は、
name
属性ではなくreferencedColumnName
属性に書くべきである.の説明に従って、以下の変更を行い、サーバを再起動します.
# 생성된 create 문
create table exchange (
exchange_id bigint not null auto_increment,
acceptor_confirm_yn bit not null,
exchange_complete_dt datetime(6),
exchange_complete_yn bit not null,
requester_confirm_yn bit not null,
# 아래 4줄 주목!!
acceptor_id bigint not null,
acceptor_product_id bigint not null,
requester_id bigint not null,
requester_product_id bigint not null,
primary key (exchange_id))
以上のように,name属性で設定した名前にカラム名を設定し,DDLが生成されたと判断した.Reference
この問題について(JPAにおける関連関係マッピング(feat.repreated column in mapping for entity error)), 我々は、より多くの情報をここで見つけました https://velog.io/@minji/JPA의-연관관계-맵핑-feat.-Repeated-column-in-mapping-for-entity-에러テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol