Понимание переопределения аннотаций столбцов в Spring Boot JPA
Spring Boot JPA, популярная платформа ORM, позволяет разработчикам аннотировать объекты с помощью @Column для укажите конкретные имена столбцов в базе данных. Однако было замечено, что в определенных сценариях JPA может игнорировать аннотацию @Column и по умолчанию использовать версию имени свойства с подчеркиванием в схеме базы данных.
Почему JPA может игнорировать аннотацию столбца
Одной из возможных причин того, что JPA игнорирует аннотацию @Column, может быть стратегия именования, используемая базовой структурой Hibernate. По умолчанию Hibernate использует стратегию org.hibernate.cfg.ImprovedNamingStrategy, которая генерирует имена столбцов Snake Case независимо от аннотации @Column.
Решение: стратегия именования EJB3
Чтобы решить эту проблему и гарантировать, что JPA учитывает аннотацию @Column, вы можете явно установить стратегию именования Hibernate на org.hibernate.cfg.EJB3NamingStrategy. Эта стратегия сохранит регистр и интервал между символами, указанные в аннотации @Column.
Соображения по поводу диалекта SQL Server
При подключении к Microsoft SQL Server вы можете столкнуться с другая проблема, когда Hibernate использует диалект org.hibernate.dialect.SQLServerDialect. Этот диалект может привести к несогласованности именования, когда JPA может использовать имена столбцов со смешанным регистром, даже при использовании стратегии именования EJB3.
Устаревшие стратегии неявного и физического именования
Чтобы решить этой проблемы вы можете добавить следующие свойства в файл application.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
Эти настройки заставят Hibernate использовать устаревшие стратегии неявного и стандартного физического именования, которые гарантируют, что @Column аннотация соблюдается, и имена столбцов генерируются последовательно.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3