Maison > Java > javaDidacticiel > le corps du texte

Pourquoi mes annotations de colonnes sont-elles ignorées dans Spring Boot JPA ?

Barbara Streisand
Libérer: 2024-10-31 02:12:01
original
1018 Les gens l'ont consulté

Why Are My Column Annotations Ignored in Spring Boot   JPA?

Annotation du nom de colonne négligée dans Spring Boot JPA : comprendre l'écart

Dans les applications Spring Boot avec JPA, les développeurs peuvent rencontrer un problème curieux où les annotations de colonnes avec des noms personnalisés sont ignorées, ce qui oblige SQL à générer des noms de colonnes suivant les conventions par défaut. Cet article explore les raisons de cet oubli et propose une solution viable.

La stratégie de dénomination standard utilisée par Hibernate dans JPA est la DefaultNamingStrategy, qui mappe les noms d'entités et de colonnes en SQL à l'aide de diverses règles de conversion. Cependant, cette stratégie peut ne pas prendre explicitement en compte les annotations de colonne, ce qui entraîne la génération du nom de colonne par défaut (dans ce cas, "test_name") au lieu du nom annoté ("TestName").

Pour résoudre cet écart, il est nécessaire de configurer explicitement la stratégie de nommage d'Hibernate. En définissant spring.jpa.hibernate.naming_strategy=org.hibernate.cfg.EJB3NamingStrategy dans les propriétés de l'application, Hibernate basculera vers EJB3NamingStrategy. Cette stratégie préserve les noms d'annotations de colonnes, résolvant ainsi le problème d'origine.

Cependant, cette configuration peut ne pas être universellement applicable. Dans certains scénarios, le dialecte Hibernate sous-jacent peut également influencer les conventions de dénomination. Par exemple, lors de la connexion à Microsoft SQL Server 2014 Express, Hibernate utilise SQLServerDialect par défaut. Ce dialecte peut ne pas prendre entièrement en charge la stratégie de dénomination souhaitée, même lorsqu'il est explicitement configuré.

Pour surmonter cette limitation, Hibernate 5 propose des options de configuration supplémentaires :

  • spring.jpa.hibernate.naming .implicit-strategy : Détermine la stratégie de génération de noms de colonnes implicites (par exemple, des colonnes de clé étrangère).
  • spring.jpa.hibernate.naming.physical-strategy : Contrôle la stratégie de génération de noms de colonnes et de tables physiques en fonction sur les noms d'entité et de propriété.

En définissant ces deux propriétés sur org.hibernate.boot.model.naming.ImplicitNamingStrategyLegacyJpaImpl et org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl respectivement, vous pouvez effectivement remplacer le comportement de dénomination par défaut et assurez-vous que le nom de la colonne annotée est honoré.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!