如何使用 @OneToOne 注释绑定(bind)两列?
假设我有 2 个表 A 和 B。
表A:
- id1(主键)
- id2(PK)
- 其他列
表B:
- id1(PK)
- id2(PK)
- 其他列
在A类中我想写这样的东西:
@OneToOne(fetch = FetchType.EAGER, targetEntity = B.class)
@JoinColumn(name = "id1 and id2", referencedColumnName = "id1 and id2")
private B b;
是否可以使用注释来做到这一点?
谢谢。
最佳答案
您需要的是复合键。使用@IdClass
或@EmbeddedId
@EmbeddedId
的示例如下。
您的复合键类:
@Embeddable
public class CompositePK implements Serializable {
protected Integer id1;
protected Integer id2;
// equals, hashCode
}
您的实体类:
@Entity
public class A{
@EmbeddedId
private CompositePK compkey;
@OneToOne(optional=true, mappedBy="A")
private B b;
........
}
关于java - Hibernate 与多列一对一,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24078369/