Hibernate не будет создавать индексы при создании таблиц из аннотаций - PullRequest
2 голосов
/ 20 июля 2010

Я использую hibernate с hbm2ddl.auto = update , чтобы он автоматически генерировал мои таблицы оракула для меня (я не собираюсь изучать sql оракула).

Пока все хорошо, до сих пор я пытаюсь заставить его создать индекс. Насколько я могу судить, я правильно сделал свои аннотации:

package data;
import javax.persistence.*;
import org.hibernate.annotations.Index;

@Entity
@Table(name="log_entries")
@org.hibernate.annotations.Table(appliesTo="log_entries",
    indexes = { @Index(name="idx", columnNames = {"job", "version", "schedule", "dttmRun", "pid" } ) } )
public class LogEntry {
  @Id @GeneratedValue
  Long id;
  String job;
  String version;
  String schedule;
  String dttmRun;
  int pid;
  String command;
  int duration;

  // getters and setters...
}

Когда я удаляю таблицу и перезапускаю свое приложение, оно создает таблицу, но не индекс. Есть идеи?

1 Ответ

2 голосов
/ 20 июля 2010

Я проверил ваш код на Derby, и вот что я получаю при запуске SchemaUpdate SchemaExport:

drop table log_entries

create table log_entries (
    id bigint not null,
    command varchar(255),
    dttmRun varchar(255),
    duration integer not null,
    job varchar(255),
    pid integer not null,
    schedule varchar(255),
    version varchar(255),
    primary key (id)
)

create index idx on log_entries (job, version, schedule, dttmRun, pid)

Работает как положено.Хотя сейчас не могу попробовать Oracle.

Протестировано с Hibernate EM 3.4.0.GA, Hibernate Annotations 3.4.0.GA, Hibernate Core 3.3.0.SP1.

Обновление: Я понял, что я запустил SchemaExport, а не SchemaUpdate и подтвердил, что индекс не был создан при запуске SchemaUpdate с версиями библиотек, упомянутых выше.Так, в то время как ANN-108 было отклонено как обман HHH-1012 , тогда как HHH-1012 помечен как фиксированный, в то время как HB-1458 открыт (!?), Мой быстрый тест не сработал, как ожидалось.Позже я посмотрю глубже, но сейчас я очень смущен (особенно ЧЧХ-1012 ).

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