因此,在 Hibernate 管理的一个类中,我有以下属性定义:
@ManyToOne(optional = false)
private Company company;
当为 MySQL 创建数据库模式时,Hibernate 会自动为此字段创建外键和索引:
KEY `FK334B8608339B7FC2` (`company_id`),
CONSTRAINT `FK334B8608339B7FC2` FOREIGN KEY (`company_id`) REFERENCES `companies` (`id`)
正如您所看到的,hibernate 对索引 (KEY) 和外键约束使用相同的名称。这似乎并没有打扰 MySQL,但是当我尝试使用其他工具时(例如mysqldiff http://www.mysqldiff.org/%20%22mysqldiff%27)它抱怨存在重复的约束(因为 FK 和索引具有相同的名称)。
这是休眠的错误(它不应该生成两个具有相同名称的不同项目),还是工具的问题,他们错误地认为这些是重复的?
仅供参考:我正在使用 Hibernate 3.4.0.GA 和 MySQL 5.1.44
Thanks!
John.
根据我的经验,hibernate 通常会在 FK 字段上创建一个外键和索引,每个名称都不同。我不明白为什么休眠会奇怪地生成相同的名称。
您可以使用@ForeignKey(name="")
, @Index
or @IndexColumn
更改外键或索引名称。
这样就可以避免这个麻烦了。
但是,看起来有一个bug https://hibernate.onjira.com/browse/HHH-4245 with @OneToOne
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)