Java 在@JoinColumns中连接特定列

Java 在@JoinColumns中连接特定列,java,hibernate,Java,Hibernate,如何在@JoinColumns中联接特定列?例如,如果Address类中有一个包含ID和ZIP的复合PK,我如何只加入“ID”列,以便只创建一个ADDR\u ID列,而不是ADDR\u ZIP @MapsId(“ID”)无法仅引用ID并排除ZIP 在hibernate中可以吗?如果您只想加入一列,您应该尝试: @ManyToOne @JoinColumns ({ @JoinColumn(name="ADDR_ID", referencedColumnName="ID"), @Jo

如何在
@JoinColumns
中联接特定列?例如,如果Address类中有一个包含ID和ZIP的复合PK,我如何只加入“ID”列,以便只创建一个
ADDR\u ID
列,而不是
ADDR\u ZIP

@MapsId(“ID”)
无法仅引用ID并排除ZIP


在hibernate中可以吗?

如果您只想加入一列,您应该尝试:

@ManyToOne
@JoinColumns
({
    @JoinColumn(name="ADDR_ID", referencedColumnName="ID"),
    @JoinColumn(name="ADDR_ZIP", referencedColumnName="ZIP")
})
public Address getAddress() { return address; }

JPQL是定义联接条件并返回所需结果的地方

实体定义将java映射到数据库世界


如果ID与多个地址匹配,则返回一个列表

否您不能使用单个列。应使用构成主键的所有字段的JoinColumn。OT它将抛出org.hibernate.AnnotationException:referencedColumnNames引用未映射到单个属性详细描述您的问题,如果ID是唯一的,为什么你的数据库中有一个复合键?@KalpeshSoni:No ADDR\u ID不是唯一的。但是我只需要表中的特定列,而不需要ADDR\u ZIP。是否可以只在复合PK的特定列上加入?
@ManyToOne
@JoinColumns
({
    @JoinColumn(name="ADDR_ID", referencedColumnName="ID")
})
public Address getAnotherAddress() { return address; }