JPA (Hibernate) et les préfixes de table personnalisé
Est-il possible de remplacer les noms de table en JPA/Hibernate afin d'ajouter un préfixe commun pour toutes les entités du projet? Par exemple, pour être en mesure de faire précéder tous JBPM 5 tables par "JBPM5_" préfixe.
Exemple pour la accepté de répondre:
public class JBPM5NamingStrategy extends ImprovedNamingStrategy {
public String classToTableName(String className) {
return StringHelper.unqualify(className);
}
public String propertyToColumnName(String propertyName) {
return propertyName;
}
public String tableName(String tableName) {
return "JBPM5_" + tableName;
}
public String columnName(String columnName) {
return columnName;
}
public String propertyToTableName(String className, String propertyName) {
return "JBPM5_" + classToTableName(className) + '_'
+ propertyToColumnName(propertyName);
}
}
tu veux dire en dehors de la
Oui, en dehors de la Table d'annotation. J'ai fait une 3ème partie du projet, de sorte que seule la configuration est viable (je ne peux pas toucher compilé source java).
et aussi que c'est fastidieux et source d'erreurs pour mettre en œuvre un site politique à l'échelle à l'aide d'annotations sur les classes individuelles
@Table
annotation?Oui, en dehors de la Table d'annotation. J'ai fait une 3ème partie du projet, de sorte que seule la configuration est viable (je ne peux pas toucher compilé source java).
et aussi que c'est fastidieux et source d'erreurs pour mettre en œuvre un site politique à l'échelle à l'aide d'annotations sur les classes individuelles
OriginalL'auteur Mike Minicki | 2010-11-30
Vous devez vous connecter pour publier un commentaire.
Une façon de renommer tous les tableaux à la fois, est de mettre en place votre propre namingStrategy (mise en œuvre de
org.hibernate.cfg.NamingStrategy
).La NamingStrategy utilisé est spécifié dans persistence.xml par
OriginalL'auteur Ralph
Utiliser un NamingStrategy. Cette la réponse précédente de la mine doit fournir exactement ce dont vous avez besoin.
Copié à partir de la réponse précédente:
+1, ne savait Jamais sur NamingStrategy, vous apprenez quelque chose de nouveau chaque jour!
C'est une hibernate chose en particulier. Il ne fonctionne pas avec d'autres fournisseurs JPA.
Merci pour l'effort et donc verbose réponse, Sean. Mais les crédits effectivement aller à Ralph pour l'info sur la façon d'injecter de la stratégie par la persistance de config. Et en tant que tel est une réponse plus complète pour mes yeux.
bien sûr, donne-Ralph le coche, mais j'ai également montré la config dans la réponse précédente je lien.
OriginalL'auteur Sean Patrick Floyd
Dans Hibernate 5, vous avez encore de mettre en œuvre ce comportement par vous-même. Cependant, il existe maintenant un implicite de la physique et de stratégie de nommage.
C'est une mise en œuvre exemplaire de préfixer les noms de tables avec mise en veille prolongée 5:
Utiliser cette propriété de configuration de Spring Boot 2 pour activer votre stratégie de nommage:
OriginalL'auteur Peter Wippermann