hiberner les problèmes de nom de colonne
@Column(name="DateOfBirth")
private Date dateOfBirth;
J'ai précisément besoin le code ci-dessus pour créer une colonne nommée "DateOfBirth," au lieu d'Hibernate me donne une colonne nommée date_of_birth. Comment puis-je changer cela? Est-il web.xml propriété? Je suis tombé sur DefaultNamingStrategy et ImprovedNamingStrategy, mais vous ne savez pas comment spécifier un ou l'autre.
source d'informationauteur lucas
Vous devez vous connecter pour publier un commentaire.
Voici une solution possible: si vous nommez
dateofbirth
la colonne dans la base de données serait nommé comme ça, mais le nom de l'attribut doit être le même.Hibernate prend le chameau cas de format, pour créer/lire les colonnes de base de données.
J'ai eu ce problème avant. J'ai travaillé avec un héritage colonnes où il n'y avait pas d'espace dans les noms de colonne "employeename", "employeerole", "departmentlocation". Je le déteste parce que tous mes haricots propriétés devaient être sans chameau cas.
De la base de données des colonnes séparées par des "_" sera utilisé pour correctement camelCase comme vous l'avez vu.
Pour info: La raison de l'insertion de traits de soulignement est probablement parce que vous êtes à l'aide d'un ImprovedNamingStrategy. Il est configuré sur votre Configuration objet. Voir ici pour un exemple...
Si vous ne voulez pas les traits de soulignement, vous pouvez tout simplement pas définir la stratégie de nommage, ou le fixer à la DefaultNamingStrategy vous découvert plus tôt.
Essayer de mettre cela dans
application.propriétés
Mettre l'annotation @Column sur la lecture:
ImprovedNamingStrategy a la méthode addUnderscores() qui est appelée à partir de tableName() et columnName()
vous pouvez mettre en place votre propre stratégie de nommage de classe et de remplacer ces selon votre choix
La solution proposée est d'utiliser @Column(name="dateofbirth"), qui a travaillé pour mes fins.
Vous pouvez annoter soit de champs ou de méthodes de lecture, il ne fait pas de différence. Vous pouvez poster votre plein hibernate.cfg.xml ou persistence.xml fichier?
ajouter en dessous de la propriété dans le cas de spring boot.
printemps.jpa.mise en veille prolongée.de nommage.implicite-de la stratégie=org.mise en veille prolongée.de démarrage.de modèle.de nommage.ImplicitNamingStrategyLegacyJpaImpl
spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
Je ne suis pas sûr à 100%, mais n'avez-vous pas besoin d'annoter la méthode get et pas la variable privée?