是否可以在 Hibernate 中通过 OneToOne 关系映射超类和子类?

发布于 2024-10-17 23:48:23 字数 64 浏览 7 评论 0原文

是否可以根据 Hibernate 中的主键属性通过 OneToOne 关系将子类映射到其超类?我怎样才能实现这个?

Is it possible to map a subclass to its superclass by OneToOne relationship base on their primary key properties in Hibernate? How can I implement this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

π浅易 2024-10-24 23:48:23

您可以使用 JOINED 继承策略来做到这一点,如下所示:

@Entity
@Inheritance(strategy=InheritanceType.JOINED)
public class Cat implements Serializable {

  private int id;

  @Id
  @GeneratedValue
  public int getId() { 
    return id;
  }

  public void setId(final int id) {
    this.id = id;
  }
}

@Entity 
public class DomesticCat extends Cat {

  private String name;

  public String getName() { 
    return name;
  }

  public void setName(final String name) {
    this.name = name;
  }
}

这样,id 将同时位于 catdomesticcat 表中,两者都作为主键,并带有两者之间的外键。这为您提供了一对一的关系(不使用@OneToOne)。

You can do it with the JOINED inheritance strategy like this:

@Entity
@Inheritance(strategy=InheritanceType.JOINED)
public class Cat implements Serializable {

  private int id;

  @Id
  @GeneratedValue
  public int getId() { 
    return id;
  }

  public void setId(final int id) {
    this.id = id;
  }
}

@Entity 
public class DomesticCat extends Cat {

  private String name;

  public String getName() { 
    return name;
  }

  public void setName(final String name) {
    this.name = name;
  }
}

This way, the id will be both in the cat and the domesticcat table, both as a primary key, and with a foreign key between the two. This gives you a one to one relationship (without using @OneToOne).

时光病人 2024-10-24 23:48:23

您应该查看 Hibernate 中的 继承映射了解继承映射的参考。

You should look at Inheritance Mapping in the Hibernate reference to understand inheritance mapping.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文