hibernate ImprovedNamingStrategy переопределяет имя таблицы в сущности - PullRequest
6 голосов
/ 19 февраля 2011

Я использую org.hibernate.cfg.ImprovedNamingStrategy, но для таблицы я явно указал имя таблицы

@Table(name="EventLog",schema = "eventlogs")

Но, похоже, hibernate ищет event_log.Не должно явное именование переопределять то, что предоставляется ImprovedNamingStrategy

Ответы [ 4 ]

10 голосов
/ 15 мая 2012

Если вы хотите использовать ImprovedNamingStrategy для всех таблиц, кроме тех, которые явно указывают имя, вы можете использовать подкласс ниже.Методы columnName и tableName - это те методы, которые вызываются, когда имя явно указывается, этот подкласс оставляет указанные имена без изменений.

Мне кажется странным, что это не стандартное поведение.

public class RespectfulImprovedNamingStrategy extends ImprovedNamingStrategy
{
    @Override
    public String columnName(String columnName)
    {
        return columnName;
    }

    @Override
    public String tableName(String tableName)
    {
        return tableName;
    }
}
5 голосов
/ 19 февраля 2011

Это поведение org.hibernate.cfg.ImprovedNamingStrategy, которое преобразует смешанные имена падежей во имя встроенных подчеркиваний.http://docs.jboss.org/hibernate/core/3.5/api/org/hibernate/cfg/ImprovedNamingStrategy.html.Поэтому, если вы явно используете имя «EventLog», оно преобразуется в «event_log».

Если вы просто хотите использовать имя, явно указанное в @Table, вам следует использовать org.hibernate.cfg.DefaultNamingStrategy.По умолчанию он используется при создании экземпляра объекта org.hibernate.cfg.Configuration

2 голосов
/ 09 ноября 2016

для спящего 4 с пружиной

  spring.jpa.hibernate.naming_strategy=org.hibernate.cfg.EJB3NamingStrategy

для спящего5 с пружиной

   spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
2 голосов
/ 18 мая 2015

Вы можете явно рекомендовать hibernate использовать старый EJB3NamingStrategy, который распознает аннотированные имена таблиц, определяя следующее свойство (в зависимости от использования пружины V4 + или нет):

Spring:

spring.jpa.hibernate.naming_strategy=org.hibernate.cfg.EJB3NamingStrategy

Нетвесна (только в спящем режиме):

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