【问题标题】:Hibernate one to one with multiple columns多列一对一休眠
【发布时间】:2014-06-06 09:23:15
【问题描述】:

如何使用@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;

是否可以使用注解来做到这一点?

谢谢。

【问题讨论】:

标签: java hibernate jpa hibernate-mapping


【解决方案1】:

您需要的是复合键。使用@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;

   ........
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-29
    • 2014-05-05
    • 2011-04-07
    • 2011-05-20
    • 2021-02-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多