проблемы с именем колонки в спящем режиме - PullRequest
19 голосов
/ 18 декабря 2008
@Column(name="DateOfBirth")
private Date dateOfBirth;

Мне особенно нужен вышеуказанный код для создания столбца с именем «DateOfBirth», вместо этого Hibernate дает мне столбец с именем date_of_birth. Как я могу изменить это? Есть ли свойство web.xml? Я сталкивался с DefaultNamingStrategy и ImprovedNamingStrategy, но не уверен, как указать одно или другое.

Ответы [ 9 ]

33 голосов
/ 18 декабря 2008

К вашему сведению: причина вставки подчеркивания, вероятно, в том, что вы используете ImprovedNamingStrategy Он установлен на вашем Конфигурационном объекте. См. здесь для примера ...

Если вам не нужны подчеркивания, вы можете просто не устанавливать стратегию именования или установить для нее DefaultNamingStrategy, которую вы обнаружили ранее.

19 голосов
/ 13 июня 2017

Попробуйте вставить это

application.properties

spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
7 голосов
/ 18 декабря 2008

Вот возможный обходной путь: если вы назовете его dateofbirth столбец в БД будет назван так, но имя атрибута должно быть таким же.

Hibernate использует формат верблюда для создания / чтения столбцов базы данных.

У меня была эта проблема раньше. Я работал с устаревшими столбцами, где в именах столбцов «employeeename», «employeeerole», «Departmentlocation» не было места. Я ненавижу это, потому что все мои свойства бобов должны были быть без случая с верблюдом.

Столбцы базы данных, разделенные "_", будут использоваться для правильного отображения camelCase, как вы только что видели.

6 голосов
/ 18 декабря 2008

Поместите аннотацию @Column на геттер:

@Column(name="DateOfBirth")
public Date getDateOfBirth() {
...
}
5 голосов
/ 30 июля 2017

добавить свойство ниже в случае пружинной загрузки.

spring.jpa.hibernate.naming.implicit-стратегия = org.hibernate.boot.model.naming.ImplicitNamingStrategyLegacyJpaImpl spring.jpa.hibernate.naming.physical-стратегия = org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl

4 голосов
/ 15 октября 2012

ImprovedNamingStrategy имеет метод addUnderscores (), который вызывается из tableName () и columnName () Вы можете реализовать свой собственный класс стратегии именования и переопределить их согласно вашему выбору

    public class MyOwnNamingStrategy extends ImprovedNamingStrategy {
        @Override
        public String tableName(String tableName) {
        //return addUnderscores(columnName); // skip this
        return columnName; // if you want column name variable name same
        //return changeAsYouWant(columnName); // as name sames
       }
   }
3 голосов
/ 18 декабря 2008

В качестве обходного пути было предложено использовать @Column (name = "dateofbirth"), который работал для моих целей.

1 голос
/ 18 декабря 2008

Вы можете комментировать поля или методы получения, это не имеет значения. Вы можете опубликовать свой полный файл hibernate.cfg.xml или persistence.xml?

1 голос
/ 18 декабря 2008

Я не уверен на 100%, но вам не нужно аннотировать метод get, а не приватную переменную?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...