gpt4 book ai didi

java - Hibernate 与多列一对一

转载 作者:行者123 更新时间:2023-12-01 12:53:00 25 4
gpt4 key购买 nike

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com