JPA规范是否允许对非主键列的简单引用?
我想在引用中使用在Countrys表上有一个简单的替代/自然键(UNIQUE,NOT NULL)列iso_code,但是Eclipse的Dali显示了验证错误,并且Hibernate抛出了MappingException。
是否允许这种常见情况?
@axtavt:看来您的答案不正确。我刚刚收到了来自“ Pro JPA 2.0”作者的电子邮件,他们自己也在从事JPA规范。
“在您的示例中,Zip类与某个国家/地区有关系:
public class Zip implements Serializable { @Id @Column(name = "code") private String code; @Id @ManyToOne @JoinColumn(name = "country_code", referencedColumnName = "iso_code") private Country country = null; ... }
这似乎是试图将country_code外键列指向Country表(不是PK)中的iso_code列。 JPA从未允许您创建这样的关系, 因为如果不指定国家/地区的PK,就无法唯一标识关系中的哪个国家/地区实例。当您到达派生的标识符部分时,您只是在解决问题,但问题似乎出在无效关系本身中。”
因此,JPA规范根本不允许将关系/ FK关联到非PK列…