Nom personnalisé des colonnes dans les relations JPA
-
03-07-2019 - |
Question
Lorsque je crée des relations avec JPA en utilisant le mode veille prolongée, des noms de colonnes terriblement longs et difficiles sont générés.
Par exemple. J'ai le actionPlan_actionPlanPK
suivant, ce qui signifie que la colonne planPlan d'action
est un FK qui pointe vers actionPlanPK
.
Pour lui donner un aspect un peu plus élégant dans la base de données, j'aimerais pouvoir lui attribuer un nom, de préférence juste le nom qu’elle a dans la classe d’entité propriétaire de la relation.
Est-ce possible avec JPA?
La solution
Oui. Il est possible de spécifier votre propre nom pour une colonne si les noms par défaut ne vous satisfont pas. Par exemple, dans la classe avec la référence au plan d'action, vous pouvez spécifier:
@ManyToOne
@JoinColumn(name="actionplanId")
public ActionPlan getActionPlan(){
}
Et ainsi, le nom de la colonne sera "actionplanid".
Autres conseils
Cette fonctionnalité fait partie de la spécification JPA et permet de nommer un grand nombre de vos structures de base de données dans les annotations. Ceux-ci incluent:
Nommez votre table comme suit:
@Entity
@Table(name="better_table_name")
public class MyConvolutedClassName {
}
Nommez vos colonnes comme suit:
@Column(name="better_column_name")
private Date myConvolutedDateColumn;
Nommer les colonnes faisant partie d'une relation:
@ManyToOne
@JoinColumn(name="better_join_column_name")
private ClassName otherModelClass;
Il existe une excellente feuille de triche (bien que pas tout à fait à jour) pour les annotations EJB 3.0 (qui inclut JPA) disponible à l'adresse http://www.fnogol.de/media/ejb3.0-anno-cheat-1.2.pdf .