Я хочу добавить индекс в текстовое поле с помощью сопоставления xml. Как предложено в https://stackoverflow.com/a/860955/3256688, я пытаюсь использовать вспомогательные объекты базы данных, потому что длина индекса не поддерживается в самом отображении. Но для меня это похоже, что Hibernate полностью игнорирует эту часть отображения.Установить длину индекса TEXT
Вот мой код. Хотите добавить индекс url_idx
в таблицу MY_TABLE
.
hibernate.cfg.xml:
<hibernate-configuration>
<session-factory>
<property name="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialect</property>
<property name="hibernate.hbm2ddl.auto">update</property>
...
<mapping resource="mytable.hbm.xml"/>
...
mytable.hbm.xml:
<hibernate-mapping>
<class name="com.company.MyTable" table="MY_TABLE">
...
<property name="url" column="url" type="text"/>
...
</class>
<database-object>
<create>CREATE INDEX url_idx ON MY_TABLE (`url`(30))</create>
<drop>DROP INDEX ON MY_TABLE `url_idx`</drop>
<dialect-scope name="org.hibernate.dialect.MySQL5InnoDBDialect"></dialect-scope>
</database-object>
</hibernate-mapping>
В протоколирования спящий режим (уровень отладки) Я вижу, что каждая таблица и индекс создается правильно , но я ничего не знаю о url_idx
. И, конечно же, в базе данных нет индекса.
Не знаете, что мне здесь не хватает?
Редактировать: Очень интересно: если я экспортирую схему с помощью инструмента org.hibernate.tool.hbm2ddl.SchemaExport
, он работает так, как должен работать. Но все равно то же самое, если я инициализирую Hibernate в своем коде.
КПП. Я использую Hibernate 4.3.6
Что вы имеете в виду? Я не понимаю ... это точно так же, как я опубликовал его, или? – ChornHulio
Удалить инструкцию по удалению вы увидите свой индекс в базе данных – Pracede
Это тоже не работает. – ChornHulio