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

时间:2011-02-19 18:48:47

标签: java hibernate inheritance mapping one-to-one

是否可以根据Hibernate中的主键属性,通过OneToOne关系将子类映射到其超类?我该如何实现呢?

2 个答案:

答案 0 :(得分:2)

您可以使用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)。

答案 1 :(得分:1)

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