@Column
O JPA @Column
anotação é para atributos básicos entidade, como String
, Integer
, Date
.
Portanto, se o nome do atributo da entidade for diferente do nome da coluna subjacente, será necessário usar a @Column
anotação para especificar explicitamente o nome da coluna, assim:
@Column(name="created_on")
private LocalDate createdOn;
@JoinColumn
A @JoinColumn
anotação é usada para personalizar o nome da coluna Chave Externa e só pode ser usada com uma associação de entidade.
Portanto, no seu caso, porque você está usando uma @ManyToOne
associação, você precisa usar @JoinColumn
:
@ManyToOne(fetch=FetchTYpe.LAZY)
@JoinColumn(name="LicenseeFK")
private Licensee licensee;
Observe que definimos o fetch
atributo como FetchType.LAZY
porque, por padrão, FetchType.EAGER
é usado, e essa é uma estratégia terrível. Para mais detalhes sobre por que o FetchType.LAZY
padrão é muito melhor, confira este artigo .