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?

Était-ce utile?

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 .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top