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 楼答案
引入一个新的超类
RootBeer
,它具有所有常见的啤酒属性。用MappedSuperClass注释这个类。使Beer
和BeerWithIngredients
继承自RootBeer
,并用Entity
和Table(name="beer")
注释它们例如,检查this