Я пытаюсь сгенерировать отображение спящего режима из POJO с аннотациями спящего режима.Затем я хочу использовать liquibase для генерации схемы базы данных.Поэтому мне нужно, чтобы индексы были определены в моих POJO.
Пример POJO:
@Entity
public class A {
@Id
@GeneratedValue
private Long id;
@Index(name = "IDX_NAME")
@ForeignKey(name="sd")
private String name;
}
Но когда я запускаю HibernateToolTask в ant:
<hibernateTool>
<classpath>
<path location="${path}"/>
</classpath>
<annotationconfiguration configurationfile="src/hibernate.cfg.xml"/>
<hbm2hbmxml destdir="${project.dir}"/>
<hbm2ddl destdir="database/liquibase" export="false" outputfilename="update_${stamp}.sql" />
</hibernateTool>
Я не получаю никаких индексов в отображении:
<class name="A" table="A">
<id name="id" type="java.lang.Long" access="field">
<column name="id" />
<generator class="native"></generator>
</id>
<property name="name" type="java.lang.String" access="field">
<column name="name" />
</property>
</class>
В то же время, когда я делаю hbm2ddl - генерируется 'create index':
create table A (id bigint not null auto_increment, name varchar(255), primary key (id)) type=InnoDB;
create index IDX_NAME on A (name);
Как заставить hibernate генерировать индексы в отображении?
ОБНОВЛЕНИЕ:
Я обнаружил, что жидкость-база использует аннотации для генерации схемы, поэтому эта часть проблемы решена.У меня еще есть другой:
Я хочу преобразовать существующую базу данных в POJO.POJO генерируются из отображения, а отображение (генерируется с использованием jdbcannotation-hbm2hbmxml) не имеет индексов.Я считаю, что это по сути та же проблема: hbm2hbmxml не генерирует индексы.
ОБНОВЛЕНИЕ 2:
Зачем мне это нужно?У меня есть существующая схема базы данных.Я использовал, чтобы изменить его, а затем перепроектировать POJO.Теперь я хочу работать с POJO и генерировать сопоставления и схемы с помощью аннотаций.
Поэтому я хотел бы, чтобы POJO соответствовали текущей схеме базы данных, чтобы продолжить работу с ними.Очевидно, все, кроме имен и индексов внешних ключей, совпадает.Но hbm2java не генерирует аннотацию @Index. Например,
<hibernateTool>
<jdbcconfiguration propertyfile="${build.dir}/etc/hibernate.properties" packagename="${doPackageName}"/>
<hbm2java destdir="${destinationDir}" jdk5="true" ejb3="true"/>
<hbm2ddl destdir="${destinationDir}" export="false" outputfilename="update_${stamp}.sql" />
</hibernateTool>
Эта задача генерирует индексы в ddl и не генерирует индексы в POJO.