Hibernate工具逆向工程创建Set或List

Hibernate tools reverse engineering creates Set or List

两个 tables ABB 有一个指向 A 的 NOT NULL 外键(多对一)。 A 中没有列,这表明 table B 存在。这意味着关系是单向

使用 Eclipse 休眠工具逆向工程创建了 POJO classes AB。 class B 有一个类型为 A 的 属性,这是正确的。

但是,为什么 class A 有一个 属性 作为 List<B>,即使定义的关系不是双向的。

这对开​​发有什么好处吗?逆向工程是这样工作的吗?

如果有更多的table C,D,E...A具有相同的关系,则classA将有那么多List<?>个变量我认为它看起来不太好。有什么办法可以避免这种情况吗?

Eclipse JPA 工具被设计为在发现 foreign-key 从 table 到另一个 foreign-key 时创建双向关系;我没有这方面的参考资料,这是基于多年使用 Eclipse 的经验推论。

这种行为很常见:Eclipse 为您在 class B 上创建了一个 @ManyToOne 字段,这是 owning 端class A 上的 @OneToMany 字段,这是关系的 dependent 端。这意味着如果要将任何更改保存到数据库,则需要在拥有方进行操作;这也意味着您可以删除该字段,如果您不需要的话。

AFAIK 你不能告诉 Eclipse 避免创建依赖端,你必须自己删除它们。