Comprendre le remplacement des annotations de colonnes dans Spring Boot JPA
Spring Boot JPA, un framework ORM populaire, permet aux développeurs d'annoter des entités avec @Column pour spécifiez des noms de colonnes spécifiques dans la base de données. Cependant, il a été observé que dans certains scénarios, JPA peut ignorer l'annotation @Column et utiliser par défaut la version soulignée du nom de la propriété dans le schéma de la base de données.
Pourquoi JPA peut ignorer l'annotation de colonne
Une raison possible pour laquelle JPA ignore l'annotation @Column pourrait être la stratégie de dénomination utilisée par le framework Hibernate sous-jacent. Par défaut, Hibernate utilise la stratégie org.hibernate.cfg.ImprovedNamingStrategy, qui génère des noms de colonnes Snake Case quelle que soit l'annotation @Column.
Solution : stratégie de nommage EJB3
Pour résoudre ce problème et garantir que JPA respecte l'annotation @Column, vous pouvez définir explicitement la stratégie de nommage Hibernate sur org.hibernate.cfg.EJB3NamingStrategy. Cette stratégie préservera la casse et l'espacement des caractères spécifiés dans l'annotation @Column.
Considérations sur le dialecte SQL Server
Si vous vous connectez à Microsoft SQL Server, vous pouvez rencontrer un problème différent où Hibernate utilise le dialecte org.hibernate.dialect.SQLServerDialect. Ce dialecte peut conduire à des incohérences de dénomination, où JPA peut utiliser des noms de colonnes à casse mixte, même avec la stratégie de dénomination EJB3.
Stratégies de dénomination implicites et physiques héritées
Pour résoudre ce problème, vous pouvez ajouter les propriétés suivantes à votre fichier application.properties :
<code class="properties">spring.jpa.hibernate.naming.implicit-strategy=org.hibernate.boot.model.naming.ImplicitNamingStrategyLegacyJpaImpl spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl</code>
Ces paramètres forceront Hibernate à utiliser les stratégies de dénomination Legacy Implicit et Standard Physical, ce qui garantira que l'annotation @Column est respecté et les noms de colonnes sont générés de manière cohérente.
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!