Mysql 设置文本的索引长度
我想通过xml映射在文本字段上添加索引。正如中所建议的,我尝试使用辅助数据库对象,因为映射本身不支持索引长度。但对我来说,Hibernate似乎完全忽略了映射的这一部分 这是我的密码。要将索引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
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指令,您将在数据库中看到您的索引