プロパティが設定された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を使用します。
外部キー列を参照するには何を使用すればよいですか?
つかいます @JoinColumn
の代わりに @Column
:
@ManyToOne
@JoinColumn(name="LicenseeFK")
private Licensee licensee;
@JoinColumn
と@Column
を一緒に使用すると、同じエラーが発生します。使用するように変更してください:@JoinColumn
.
@JoinColumnは、このフィールドが外部キーであることを示します。 @Columnは、このフィールドがテーブルの通常の列であることを示します。
SQLでは、外部キーでのみテーブルを結合できます。したがって、@ ManyToOneまたは@ManyToManyは、外部キーであるフィールドにのみ適用できます。 @JoinColumnを使用する必要があることを示すため。
@Columnを使用すると、hibernateはそれをテーブルの通常の列と見なし、次のことを示すエラーをスローします。
特定の列は外部キーではないため、結合に使用することはできません。
解決策はすでにクラフタンによって与えられています
@ManyToOne
@JoinColumn(name="LicenseeFK")
private Licensee licensee;