0

假设我有一个依赖于用户类的类地址。地址是组件类型。Address 类可以包含对任何其他实体的引用,比如 Country。

如果是?

与地址和国家的所有 4 种关系都可能吗

一对一

多对一

多对多

一对多

如果可能,请用一些 JPA 注释进行解释

4

1 回答 1

3

[更新] 组件是“独立值”或“值对象”。对出站关系和入站关系与规范有部分支持mappedBy,但“组件”不是一流的“实体”。

许多持久性特性——查询、缓存、锁定、批量加载和会话控制特性都是主要在“实体”级别设计的。超过某个点,你可以用“组件”做什么会有限制。你是否会遇到这些限制取决于你走多远。

但实际上对您的场景进行建模,Country带有外键的表的效用是有限的。所以可能最正确的设计是保持 Address.Country 非规范化并通过自动完成来支持它。

这是首选方法的原因:

当国家确实改变他们的名字或边界时——通常不是以“关系正常化”的方式。例如,南斯拉夫 -> 克罗地亚、塞尔维亚、黑山。苏丹 -> 苏丹,南苏丹。有争议的边界转移和国家分裂,但实际上能够重命名一个明确的国家并不常见。

与人比较:人们有稳定的身份并且可以更改他们的姓名/地址,但国家没有以非常有用的方式进行此操作。

于 2013-09-07T10:30:49.623 回答