«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Почему JPA иногда игнорирует аннотацию @Column при загрузке Spring?

Почему JPA иногда игнорирует аннотацию @Column при загрузке Spring?

Опубликовано 20 ноября 2024 г.
Просматривать:593

Why Does JPA Sometimes Ignore the @Column Annotation in Spring Boot?

Понимание переопределения аннотаций столбцов в 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