Denominazione personalizzata delle colonne nelle relazioni JPA
-
03-07-2019 - |
Domanda
Quando stabilisco relazioni con l'APP usando l'ibernazione, vengono generati alcuni terribili nomi di colonne lunghe e scomode.
Per esempio. Ho il seguente actionPlan_actionPlanPK
, il che significa che la colonna actionPlan
è un FK che punta a actionPlanPK
.
Per renderlo un po 'più pulito nel DB, vorrei poterlo assegnare io stesso, preferibilmente solo il nome che ha nella classe di entità che possiede la relazione.
È possibile con JPA?
Soluzione
Sì. È possibile specificare il proprio nome per una colonna se non si è soddisfatti dei nomi predefiniti. Ad esempio nella classe con il riferimento ad ActionPlan puoi specificare:
@ManyToOne
@JoinColumn(name="actionplanId")
public ActionPlan getActionPlan(){
}
E quindi, il nome della colonna sarà " actionplanid " ;.
Altri suggerimenti
Questa funzionalità fa parte delle specifiche JPA e consente la denominazione di molte strutture del database nelle annotazioni. Questi includono:
Nomina il tuo tavolo come segue:
@Entity
@Table(name="better_table_name")
public class MyConvolutedClassName {
}
Nomina le tue colonne come segue:
@Column(name="better_column_name")
private Date myConvolutedDateColumn;
Denominazione delle colonne che fanno parte di una relazione:
@ManyToOne
@JoinColumn(name="better_join_column_name")
private ClassName otherModelClass;
Esiste un grande cheatheet (anche se non abbastanza aggiornato) per le annotazioni EJB 3.0 (che include JPA) disponibile su http://www.fnogol.de/media/ejb3.0-anno-cheat-1.2.pdf .