nomear personalizado de colunas em relações JPA
-
03-07-2019 - |
Pergunta
Quando faço relationsships com JPA usando hibernate, alguns nomes de coluna longos e desagradáveis ??terríveis são gerados.
Por exemplo. Eu tenho o seguinte actionPlan_actionPlanPK
, o que significa que o actionPlan
coluna é uma FK que aponta para actionPlanPK
.
Para torná-la um pouco mais arrumado no DB eu gostaria se eu pudesse dar um nome a mim mesmo, de preferência apenas o nome que tem na classe entidade que possui o relacionamento.
Isso é possível com JPA?
Solução
Sim. É possível especificar o seu próprio nome para uma coluna, se você não estiver satisfeito com os nomes padrão. Por exemplo, na classe com a referência ao PLANO DE ACÇÃO você pode especificar:
@ManyToOne
@JoinColumn(name="actionplanId")
public ActionPlan getActionPlan(){
}
E, assim, o nome da coluna será "actionplanid".
Outras dicas
Esta capacidade é parte da especificação do JPA e permite a nomeação de muitas das suas estruturas de banco de dados nas anotações. Estes incluem:
Naming sua tabela da seguinte forma:
@Entity
@Table(name="better_table_name")
public class MyConvolutedClassName {
}
Naming suas colunas da seguinte forma:
@Column(name="better_column_name")
private Date myConvolutedDateColumn;
Naming suas colunas que fazem parte de uma relação:
@ManyToOne
@JoinColumn(name="better_join_column_name")
private ClassName otherModelClass;
Há uma grande (embora não completamente up-to-date) cheatsheet para EJB 3.0 anotações (que inclui JPA), disponível em http://www.fnogol.de/media/ejb3.0-anno-cheat-1.2.pdf .