有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java将1个表映射到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;
}

实际上,所有啤酒数据都在一个表中,但我想将其拆分为更多的实体

请注意:

  • 我不想在数据库中使用鉴别器列
  • 没有可用于@DiscriminatorFormula的列
  • 我不想将Beer嵌入BeerWithIngredients中,因为它本质上不是一个组合,而是一个正确的继承

有没有一种方法可以通过JPA(Hibernate)实现这一点?现在它抱怨缺少鉴别器列,我不打算提供


共 (1) 个答案

  1. # 1 楼答案

    引入一个新的超类RootBeer,它具有所有常见的啤酒属性。用MappedSuperClass注释这个类。使BeerBeerWithIngredients继承自RootBeer,并用EntityTable(name="beer")注释它们

    例如,检查this