我刚刚发现 JPA 不支持非主键列的正式关系/外键。看这里:
JPA 规范是否允许引用非主键列? https://stackoverflow.com/questions/5818373/jpa-does-the-jpa-specification-allow-references-to-non-primary-key-columns
为什么这样的关系在 Hibernate 和 EclipseLink 中映射(仅在 JPA 1.0 语法中,如发布的示例中所示)?
看来这些 JPA 提供者只是天真地映射列,我认为这是一件好事,但我想明确地知道。是巧合吗?是故意的吗?
支持引用非 PK 列的 FK 是一个可选功能(而且总是如此,因此没有“JPA 1.0 语法”,我之前的答案是不正确的):
对不是引用表主键列的引用列的支持是可选的。
使用此类映射的应用程序将不可移植。
然而,休眠支持它 http://docs.jboss.org/hibernate/annotations/3.5/reference/en/html/entity.html#entity-mapping-association:
它还有一个名为referencedColumnName 的参数。此参数声明目标实体中将用于连接的列。请注意,当对非主键列使用referencedColumnName 时,关联的类必须是可序列化的。另请注意,非主键列的referencedColumnName 必须映射到具有单个列的属性(其他情况可能不起作用)。
不过,正如已经发现的那样,这种关系不能用作派生身份的一部分。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)