假设我有一个依赖于用户类的类地址。地址是组件类型。Address 类可以包含对任何其他实体的引用,比如 Country。
如果是?
与地址和国家的所有 4 种关系都可能吗
一对一
多对一
多对多
一对多
如果可能,请用一些 JPA 注释进行解释
[更新] 组件是“独立值”或“值对象”。对出站关系和入站关系与规范有部分支持mappedBy
,但“组件”不是一流的“实体”。
许多持久性特性——查询、缓存、锁定、批量加载和会话控制特性都是主要在“实体”级别设计的。超过某个点,你可以用“组件”做什么会有限制。你是否会遇到这些限制取决于你走多远。
但实际上对您的场景进行建模,Country
带有外键的表的效用是有限的。所以可能最正确的设计是保持 Address.Country 非规范化并通过自动完成来支持它。
这是首选方法的原因:
当国家确实改变他们的名字或边界时——通常不是以“关系正常化”的方式。例如,南斯拉夫 -> 克罗地亚、塞尔维亚、黑山。苏丹 -> 苏丹,南苏丹。有争议的边界转移和国家分裂,但实际上能够重命名一个明确的国家并不常见。
与人比较:人们有稳定的身份并且可以更改他们的姓名/地址,但国家没有以非常有用的方式进行此操作。