Учитывая несколько объектов Hibernate в разных пакетах большого приложения, я хотел бы убедиться, что нет конфликтов имен.Например, в пакете foo может быть Person
-Entity, а в панели пакетов - еще один Person
-Entity.
Теперь эти две сущности должны отображаться в имена таблиц следующим образом:
foo.Person --> FOO_PERSON
bar.Person --> BAR_PERSON
Я мог бы использовать аннотацию @ Table для достижения этой цели:
@Table(name="FOO_PERSON")
public class Person ...
@Table(name="BAR_PERSON")
public class Person ...
Однако я хотел бы использовать какой-то тип NamingStrategy, который делает это автоматически.Hibernate предлагает интерфейс org.hibernate.cfg.NamingStrategy
.Я попытался расширить DefaultNamingStrategy
, однако (несмотря на то, что в документации указано иное), вы получаете только неквалифицированное имя класса и, следовательно, никакой информации о имени пакета.
Существует проблема JIRA (http://opensource.atlassian.com/projects/hibernate/browse/HHH-4312) об этой проблеме. Учитывая, что она открыта с 2007 года, я ищу обходной путь или совершенно другой подход. Есть идеи?