Исследуя, как реализовать пользовательскую стратегию именования (только для имен таблиц), я наткнулся на несоответствие, которое не могу устранить. (Я использую hibernate-core 3.6.6.Final на JBoss 6.1.0.Final с PostgreSQL 9.1.9)
Кажется, есть три встроенных реализации для NamingStrategy
:
DefaultNamingStrategy
EJB3NamingStrategy
ImprovedNamingStrategy
По умолчанию, кажется, установлено значение EJB3NamingStrategy
в org.hibernate.cfg.Configuration
.
Однако имена таблиц, кажется, установлены в соответствии со стратегией, которая не соответствует ни одному из вышеперечисленных.
Пример:
Имя класса: package.ClassName
Результирующее имя таблицы: classname
Стратегии 1 и 2 просто вызывают StringHelper.unqualify( className )
, что просто удаляет все имена пакетов и точки, поэтому результат должен быть ClassName
.
Стратегия 3 удаляет все имена пакетов и точки, затем ставит подчеркивание перед каждой буквой в верхнем регистре и, наконец, преобразует в нижний регистр, что должно дать class_name
.
(Исходный код hibernate 4.1.0.Final, похоже, не изменился в этих классах.)
Может ли кто-нибудь помочь мне прояснить это?