我正在使用 Hibernate Tools 使用 STS 2.9.2 和 Hibernate Tools 4.0.0 从 MySQL 5.5.27 进行逆向工程。
它正确地生成 POJO 类,但没有拾取跨表定义的外键关系(即根本没有创建集合或关系!)。
根据您的经验,这个工具是否适用于 MySQL 或我做错了什么?
谢谢,
鲍勃
我正在使用 Hibernate Tools 使用 STS 2.9.2 和 Hibernate Tools 4.0.0 从 MySQL 5.5.27 进行逆向工程。
它正确地生成 POJO 类,但没有拾取跨表定义的外键关系(即根本没有创建集合或关系!)。
根据您的经验,这个工具是否适用于 MySQL 或我做错了什么?
谢谢,
鲍勃
很多时候mysql的默认引擎也会导致这个问题,即如果创建表的默认引擎是“MyISAM”,那么请将其更改为“InnoDB”;要更改的查询是ALTER TABLE table_name ENGINE = InnoDB; ,希望这有效:)
好的,我终于成功了!
问题是,就像所有具有技术性质的事物一样,既简单又深刻。
一句话:区分大小写
我用大写字母(即人,电话)创建了我的表,我使用 MySQL Workbench 创建了外键,它们看起来像这样:
约束FK_Phone_Person
外键 ( person_id
) 引用Person
( person_id
)
代替
约束FK_Phone_Person
外键 ( person_id
) 引用person
( person_id
)
注意大写。
在花了很多血、汗水和泪水试图让这该死的东西正常工作后,SOO很高兴,而问题一直都是问题所在!
我的经验是,逆向工程工具需要特定的约束才能工作,如果你有 @OneToMany 关系,它们必须有一个中间表,其中包含两个表的 id 以及你不能有空值或孤立行的约束。
此外,这些表需要根据您的实体进行命名,并且中间表必须命名为owning_entity_entity2
可以正常工作。