У меня есть возможности гибернации на основе аннотаций в моем проекте.
Теперь я хочу создать индекс по столбцу. Мое текущее определение столбца -
@NotNull
@Column(name = "hash")
private String hash;
, и я добавляю аннотацию @Index
сюда.
@NotNull
@Column(name = "hash")
@Index(name="hashIndex")
private String hash;
, а затем DROP TABLE и перезапустите сервер Tomcat. После того, как сервер создан, таблица создана, но я не вижу новый индекс по следующему запросу.
SHOW INDEX FROM tableName
Предполагается построить таблицу с новым индексом. Я использую InnoDB с MySQL.
Интересно, что в моей конфигурации Hibernate я использовал hibernate.hbm2ddl.auto = update
.
Этот модифицирует существующую базу данных. Я вручную удалял таблицу tableName
и перезапускал Tomcat, и таблица была создана, но индекс не создавался.
Однако я сделал hibernate.hbm2ddl.auto = create
, который воссоздает базу данных при каждом создании экземпляра webapp, он удалял всю мою базу данных и восстанавливал ее обратно, и - ну да, мой новый индекс был создан !