Mysql 设置文本的索引长度

Mysql 设置文本的索引长度,mysql,hibernate,Mysql,Hibernate,我想通过xml映射在文本字段上添加索引。正如中所建议的,我尝试使用辅助数据库对象,因为映射本身不支持索引长度。但对我来说,Hibernate似乎完全忽略了映射的这一部分 这是我的密码。要将索引url\u idx添加到表MY\u表 hibernate.cfg.xml: <hibernate-configuration> <session-factory> <property name="hibernate.dialect">org.hibernate.d

我想通过xml映射在文本字段上添加索引。正如中所建议的,我尝试使用辅助数据库对象,因为映射本身不支持索引长度。但对我来说,Hibernate似乎完全忽略了映射的这一部分

这是我的密码。要将索引
url\u idx
添加到表
MY\u表

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"/>
    ...

org.hibernate.dialogue.mysql5innodbdialogue
更新
...
...
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>

...
...
在MY_表上创建索引url_idx(`url`(30))
在MY_表'url\u idx上放置索引`
在hibernate(调试级别)的日志记录中,我看到每个表和索引都被正确创建,但是我找不到关于
url\u idx
的任何信息。当然,数据库中没有创建索引

有没有线索知道我在这里遗漏了什么

编辑:非常有趣:如果我使用工具
org.hibernate.tool.hbm2ddl.SchemaExport
进行模式导出,它会正常工作。但如果我在代码中初始化Hibernate,情况仍然相同


顺便说一句,我使用的是Hibernate 4.3.6

这里的问题,是您用

 <create>CREATE INDEX url_idx ON MY_TABLE (`url`(30))</create>
在MY_表上创建索引url_idx(`url`(30))
然后用

<drop>DROP INDEX ON MY_TABLE `url_idx`</drop>
在MY_表'url\u idx上放置索引`

我找到了解决方案:
hibernate.hbm2ddl.auto
必须是
create
create drop
,否则代码将不会执行。我认为这是一个bug…

你什么意思?我不明白。。。这和我发布它的方式完全相同,或者?删除drop指令,您将在数据库中看到您的索引