Как мы можем изменить метод генерации имен PK и FK в спящем режиме? - PullRequest
2 голосов
/ 19 марта 2010

Могу ли я предоставить какой-нибудь алгоритм для генерации чего-то целого из FK030HF9840303, например?

Ответы [ 3 ]

3 голосов
/ 19 марта 2010

Вам необходимо реализовать собственную NamingStrategy (org.hibernate.cfg.NamingStrategy). Возможно, использование подклассов того, который вы используете в данный момент, является самым простым способом (по умолчанию hibernate использует DefaultNamingStrategy).

Затем настройте sessionFactory с вашей стратегией именования:

SessionFactory sf = new Configuration()
    .setNamingStrategy(new YourNamingStrategy())
    .addFile(...)
    .buildSessionFactory();

Или с помощью внедрения зависимости пружины на фабрику сеанса, если вы ее используете:

<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
...
  <property name="namingStrategy">
    <ref bean="namingStrategy" />
  </property>
...
1 голос
/ 23 марта 2010

Вы не можете ничего переопределить с помощью стратегии аннотаций или именования. Например, FK соединяемых таблиц не может быть задан с помощью стратегии именования и является проблемой при использовании аннотации.

Если вы хотите настроить все одинаково, вы можете изменить конфигурацию аннотации перед экспортом схемы в базу данных

AnnotationConfiguration configuration = ...;
Iterator<Table> tables = configuration.getTableMappings();
...
Iterator<ForeignKey> keys = table.getForeignKeyIterator();
while ( keys.hasNext() ) {
ForeignKey key = keys.next();
key.setName( ... );
}
...

SchemaExport schemaExport = new SchemaExport( configuration );
schemaExport.setHaltOnError( true );
schemaExport.execute( false, true, false, true );
List exceptions = schemaExport.getExceptions();
...
0 голосов
/ 19 марта 2010

также, если у вас есть конкретная НЕПРОГРАММНАЯ стратегия именования, которую вы хотите использовать, вы можете просто изменить отображение внешнего ключа файла hbm.xml. Это атрибут всех соответствующих наборов и т. Д.

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