有 Java 编程相关的问题?

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

java如何在spring boot中使用超类@Entity引用子类

我正在尝试使用SpringBoot和HibernateJPA创建一个表。现在我有一个情况,我有一个实体产品,可以是两种类型。内置产品或定制产品

产品是超级类,内置产品和定制产品都扩展了它

现在我有了另一个实体OrderItem,它与产品有@ManyToOne关系

因此,此OrderItem可以将产品作为内置产品或自定义产品

我尝试在产品上使用@Inheritance,将@DiscriminatorColumn作为is_a并扩展该类以生成内置产品和CustomProduct。我的课看起来像

@Table(name = "products")
@Entity
@Inheritance
@DiscriminatorColumn(name = "is_a")
public abstract class Product {
  // Getter Setters
}

另外两个班是

@Entity
public class BuiltInProduct extends Product {
  // Getter setters
}

现在,因为我的实体OrderItem可以有内置产品或自定义产品,所以它有一个字段产品

public class OrderItem {
  ...
  @ManyToOne
  private Product product;
}

我知道产品是抽象类,因此我需要更多的信息来序列化和反序列化为类型

我试过了Deserialize JSON with Jackson into Polymorphic Types - A Complete Example is giving me a compile error

我仍然无法获得所需的输出

我刚接触Spring,不知道如何处理这种情况

此外,我不确定我是否使用了正确的@Inheritance,或者是否应该使用联接的、表每类的方法

我相信JOINED将更适合ButilIn和CustomProducts,因为它们具有不同的属性,但同时我也不知道如何实现这一点

我的用例是,我有一个字段,其中可以包含可以选择的内置产品,或者用户可以添加自定义产品


共 (0) 个答案