我正在尝试使用Spring Boot和Hibernate JPA创建一个表。现在,我有一个实体产品,该产品可以是两种类型。 BuiltInProduct或CustomProduct
Product是超类,BuiltInProduct和CustomProduct都对其进行扩展。
现在我有另一个实体OrderItem,它与产品具有@ManyToOne
关系。
因此,此OrderItem可以将产品作为“内置”或“自定义”。
我尝试在@Inheritance
作为@DiscriminatorColumn
的Product上使用is_a
,并扩展此类以制作BuiltInProduct和CustomProduct。我的课程看起来像
@Table(name = "products")
@Entity
@Inheritance
@DiscriminatorColumn(name = "is_a")
public abstract class Product {
// Getter Setters
}
另外两个类是
@Entity
public class BuiltInProduct extends Product {
// Getter setters
}
现在,由于我的Entity OrderItem可以具有内置产品或自定义产品,因此它具有字段“产品”
public class OrderItem {
...
@ManyToOne
private Product product;
}
我知道该产品是抽象类,因此我需要更多信息来序列化和反序列化为类型。
我仍然无法获得所需的输出。
我是Spring的新手,不知道如何处理这种情况。
我也不确定我使用的是正确的@Inheritance
还是应该使用JOINED,TABLE_PER_CLASS方法。
我相信JOINED会更适合,因为ButilIn和CustomProducts将具有不同的属性,但同时也无法弄清楚如何实现这项工作。
我的用例是,我有一个可以包含BuiltInProducts的字段,可以选择该字段,或者用户可以添加自定义产品。