I have a JPA entity with a property set as
@ManyToOne
@Column(name=\"LicenseeFK\")
private Licensee licensee;
But when I deploy on JBoss 6
@ColumnThe JPA @Column annotation is for basic entity attributes, like String, Integer, Date.
So, if the entity attribute name differs than the underlying column name, then you need to use the @Column annotation to specify the column name explicitly, like this:
@Column(name="created_on")
private LocalDate createdOn;
@JoinColumnThe @JoinColumn annotation is used to customize a Foreign Key column name, and it can only be used with an entity association.
So, in your case, because you are using a @ManyToOne association, you need to use @JoinColumn:
@ManyToOne(fetch=FetchTYpe.LAZY)
@JoinColumn(name="LicenseeFK")
private Licensee licensee;
Notice that we set the
fetchattribute toFetchType.LAZYbecause, by default,FetchType.EAGERis used, and that's a terrible strategy. For more details about whyFetchType.LAZYis a much better default, check out this article.