Я пытаюсь создать таблицу, используя Spring boot и Hibernate JPA.Теперь у меня есть ситуация, когда у меня есть продукт Entity, который может быть двух типов.BuiltInProduct или CustomProduct
Продукт является суперклассом, и как BuiltInProduct, так и CustomProduct расширяют его.
Теперь у меня есть другая сущность OrderItem, которая имеет отношение @ManyToOne
к продукту.
Таким образом, этот OrderItem может иметь продукт в виде BuiltIn OR Custom.
Я пытался использовать @Inheritance
для Product с @DiscriminatorColumn
в качестве 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 может иметь встроенный или пользовательский продукт, у него есть поле Product
public class OrderItem {
...
@ManyToOne
private Product product;
}
Я знаю, что продукт является абстрактным классом, и, следовательно, мне нужно больше информации для сериализации и десериализации в типы.
Я попытался десериализовать JSON с Джексоном в полиморфные типы - полный пример даетмне ошибка компиляции
Я все еще не могу получить желаемый вывод.
Я новичок в Spring и не знаю, как обрабатывать подобные сценарии.
Также я не уверен, что я использую правильный @Inheritance
или должен использовать подход JOINED, TABLE_PER_CLASS.
Я считаю, что JOINED будет более подходящим, поскольку ButilIn и CustomProducts будут иметь разные атрибуты, но с одинаковымивремя также не может понять, как заставить это работать.
Мой пример использования - у меня есть поле, которое может иметь BuiltInProducts, которые можно выбрать, илиПользователь может добавить пользовательский продукт.