hibernate - JPA规范是否允许引用非主键列?

标签 hibernate jpa mapping

JPA规范是否允许对非主键列的简单引用?

我想在引用中使用我的Countrys表上的iso_code列,它有一个简单的替代/自然键(UNIQUE,NOT NULL),但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
无法唯一标识关系中的哪个Country实例。当您到达派生的标识符部分时,您只是在解决问题,但问题似乎出在无效的关系本身中。”

因此,JPA规范根本不允许将关系/ FK链接到非PK列...

关于hibernate - JPA规范是否允许引用非主键列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5818373/

相关文章:

java - 如何在实体中制作唯一字​​段,但相对多对一实体?

java - 不支持的媒体类型”,"exception":"org.springframework.web.HttpMediaTypeNotSupportedException","message":"Content

java - 带有前缀的JPA多个嵌入式字段?

r - 如何将数值分配给R中列内的新单词

c# - ValueInjector Stack Overflow 映射实体与父实体

ios - 我如何访问其他 Mappble 类对象的值。(Alamofire Object Mapper)

java - Tomcat 中 JPA+Spring+Hibernate 的容器管理事务

PostgreSQL,Spring 数据 JPA : Integer null interpreted as bytea

java - 日期列,默认日期包含小时和分钟

java - JPA、MySQL blob - 数据太长