@Column
The JPA @Column
annotation is for basic entity attributes, like String
, Integer
, Date
.
So, if the entity attribute name differs from 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;
@JoinColumn
The @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 fetch
attribute to FetchType.LAZY
because, by default, FetchType.EAGER
is used, and that's a terrible strategy.