多列Hibernate一对一

时间:2014-06-06 09:23:15

标签: java hibernate jpa hibernate-mapping

如何使用@OneToOne注释绑定两列?

让我说我有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;

是否可以使用注释来完成此操作?

感谢。

1 个答案:

答案 0 :(得分:1)

您需要的是复合键。使用@IdClass@EmbeddedId

@EmbeddedId这样的例子。

你的复合密钥类:

@Embeddable
public class CompositePK implements Serializable {
    protected Integer id1;
    protected Integer id2;


    // equals, hashCode
}

您的Enity课程:

@Entity
public class A{
    @EmbeddedId 
    private CompositePK compkey;

    @OneToOne(optional=true, mappedBy="A")
    private B b;

   ........
}