Hibernate工具逆向工程创建Set或List
Hibernate tools reverse engineering creates Set or List
两个 tables A
和 B
。 B
有一个指向 A
的 NOT NULL 外键(多对一)。 A
中没有列,这表明 table B
存在。这意味着关系是单向
使用 Eclipse 休眠工具逆向工程创建了 POJO classes A
和 B
。 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 避免创建依赖端,你必须自己删除它们。
两个 tables A
和 B
。 B
有一个指向 A
的 NOT NULL 外键(多对一)。 A
中没有列,这表明 table B
存在。这意味着关系是单向
使用 Eclipse 休眠工具逆向工程创建了 POJO classes A
和 B
。 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 避免创建依赖端,你必须自己删除它们。