将1个表映射到JPA中的多个类

时间:2015-02-17 15:52:31

标签: java hibernate jpa

我想实现这样的目标:

@Entity
@Table(name = "beer")
public class Beer {

    @Id Long id;
    String brand;
    String name;
}

@Entity
public class BeerWithIngredients extends Beer {

    @OneToMany(mappedBy="beer")
    List<BeerIngredient> ingredients; 
}

@Entity
public class BeerIngredient {

    @Id Long id;
    // .. whatever fields

    @ManyToOne
    @JoinColumn(name = "beer_id")
    BeerWithIngredient beer;
}

从物理上讲,所有啤酒数据都在一张表中,但我希望将其分成更多实体。

请注意:

  • 我不想在数据库中使用discriminator列
  • 我无法使用@DiscriminatorFormula
  • 我不想在Beer中嵌入BeerWithIngredients,因为它本质上不是合成,而是正确的继承

有没有办法用JPA(Hibernate)实现这个目标?现在它抱怨缺少鉴别列,我不打算提供。

1 个答案:

答案 0 :(得分:0)

介绍一个具有所有常见啤酒属性的新超级RootBeer。使用MappedSuperClass注释此类。让BeerBeerWithIngredients继承自RootBeer,并使用EntityTable(name="beer")对其进行注释。

例如,检查this