2014-12-05 4 views
0

Я хочу добавить индекс в текстовое поле с помощью сопоставления 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

ответ

1

Я нашел решение: hibernate.hbm2ddl.auto должен быть create или create-drop , иначе код не будет выполнен. Я думаю, что это ошибка ...

0

Здесь проблема, Вы создаете с

<create>CREATE INDEX url_idx ON MY_TABLE (`url`(30))</create> 

И вы удалите его с

<drop>DROP INDEX ON MY_TABLE `url_idx`</drop> 
+0

Что вы имеете в виду? Я не понимаю ... это точно так же, как я опубликовал его, или? – ChornHulio

+0

Удалить инструкцию по удалению вы увидите свой индекс в базе данных – Pracede

+0

Это тоже не работает. – ChornHulio

Смежные вопросы