У меня есть следующий json, который я хотел бы сохранить в java-объекте:
{
"shippingDetails":{
"address":"khalda",
"country":"Jordan",
"town":"amman"
},
"product":[
{
"product":{
"id":2,
"name":"Wrap Dress",
"price":330,
"salePrice":165,
"discount":50,
"pictures":[
"assets/images/fashion/product/1.jpg",
"assets/images/fashion/product/1.jpg",
"assets/images/fashion/product/1.jpg",
"assets/images/fashion/product/1.jpg"
],
"shortDetails":"test",
"description":"test",
"stock":2,
"new":true,
"sale":false,
"category":"women",
"colors":[
"gray",
"orange"
],
"size":[
"M",
"L",
"XL"
],
"tags":[
"caprese",
"puma",
"lifestyle"
],
"variants":[
{
"color":"gray",
"images":"assets/images/fashion/product/1.jpg"
},
{
"color":"orange",
"images":"assets/images/fashion/product/1.jpg"
}
]
},
"quantity":1
}
],
"totalAmount":330
}
И у меня есть для этого следующие бобы Java:
Основной объект класса называется Order и имеет
@Data
@Entity
@Table(name = "orders")
public class Order {
@Id
@Column(name="shippingDetailsId")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
@OneToOne(cascade = {CascadeType.ALL})
private ShippingDetails shippingDetails;
//@OneToMany(cascade = {CascadeType.ALL})
//List<Product> products;
List<Object> product = new ArrayList<>();
private float totalAmount;
}
и классы внутренних объектов:
@Data
@Entity
@Table(name = "products")
public class Product {
@Id
@Column(name = "productId")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
@ManyToOne
private Order order;
private Boolean isNew;
private String salePrice;
private String shortDetails;
private String discount;
private String description;
private Variants[] variants;
private String[] pictures;
private String[] colors;
private String[] tags;
private String sale;
private String[] size;
private String price;
private String name;
private String stock;
private String category;
}
и детали доставки:
@Data
@Entity
@Table(name = "shippingDetails")
public class ShippingDetails {
@Id
@Column(name="shippingDetailsId")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
private String address;
private String country;
private String town;
}
Я пробовал много способов, но ни один из них не сработал, сначала я попытался принять объект Order в моем контроллере и попытаться сохранить его, но не сработал, результаты были:
при использовании списка все значения выводятся на консоль по желанию и вставляются в базу данных, но в той же таблице «Заказы», это не то, что я ищу, я хочу, чтобы продукты были сохранены в отдельной таблице под названием «Продукты». поэтому я использовал List.
при использовании Список значений продукта был нулевым.
Затем я попытался принять строку из моего контроллера и использовать библиотеку GSON для преобразования ее в объект Order, но он также не работал, я получил множество исключений, пытаясь выяснить это, и попробовал много способов, которые были упомянуты на stackoverflow и других веб-сайтах, но не повезло, пожалуйста, обратите внимание, что я проверил мою строку json, и это действительный json.