web-dev-qa-db-ja.com

@ManyToOneプロパティでは@Columnは許可されません

プロパティが設定されたJPAエンティティがあります

@ManyToOne
@Column(name="LicenseeFK")
private Licensee licensee;

しかし、JBoss 6にデプロイすると、アプリケーションは次のエラーをスローします:

org.hibernate.AnnotationException: @Column(s) not allowed on a @ManyToOne property

JPA 2.0実装としてHibernate 3.5を使用します。

外部キー列を参照するには何を使用すればよいですか?

129
newguy

つかいます @JoinColumn の代わりに @Column

@ManyToOne
@JoinColumn(name="LicenseeFK")
private Licensee licensee;
267
kraftan

@JoinColumn@Columnを一緒に使用すると、同じエラーが発生します。使用するように変更してください:@JoinColumn.

5

@JoinColumnは、このフィールドが外部キーであることを示します。 @Columnは、このフィールドがテーブルの通常の列であることを示します。

SQLでは、外部キーでのみテーブルを結合できます。したがって、@ ManyToOneまたは@ManyToManyは、外部キーであるフィールドにのみ適用できます。 @JoinColumnを使用する必要があることを示すため。

@Columnを使用すると、hibernateはそれをテーブルの通常の列と見なし、次のことを示すエラーをスローします。
特定の列は外部キーではないため、結合に使用することはできません。

解決策はすでにクラフタンによって与えられています

@ManyToOne
@JoinColumn(name="LicenseeFK")
private Licensee licensee;
1
Shivendra Kadam