使用JPA将记录插入多个表

问题描述

我有三个实体

  1. 产品
  2. 产品详细信息
  3. 库存
  4. 类别 参考在下面

当我尝试获取产品的详细信息时,当我尝试将其保存时,它可以在控制台中正常显示

2020-08-12 13:17:22.279  WARN 18612 --- [nio-9002-exec-1] .c.j.MappingJackson2HttpMessageConverter : Failed to evaluate Jackson deserialization for type [[simple type,class com.eMart.main.entity.Product]]: com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot handle managed/back reference 'defaultReference': back reference type (java.util.List) not compatible with managed type (com.eMart.main.entity.Product)

我的问题是如何将产品添加到数据库中以及如何优化实体

输入

{
        "skuId": "2","category": {
            "categoryId": 2,"categoryName": "food"
        },"description": "cow milk","stock": {
            "stockId": 1,"inventoryCount": 5,"selfCount": 5
        },"productDetails": [
            {
                "productDetailId": 1,"cost": 10.0,"currency": "inr","expiryDate": "2020-08-11T18:30:00.000+00:00","supplierCode": 1
            }
        ]
    }

控制器方法

@PostMapping(value = "/test")
    public ResponseEntity<Product> test(@RequestBody Product product) throws Exception {
productRepositry.save(product);
        return new ResponseEntity(productRepositry.findAll(),OK);

    }
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@ToString
@Entity
public class Product {
    @Id
    @Column(name = "SKU_ID")
    String skuId=null;
    @ManyToOne
    @JoinColumn(name = "category_id")
    @JsonManagedReference
    Category category;

    @Column(name = "description")
    String description=null;

   @JsonManagedReference
    @OneToOne(cascade = CascadeType.ALL)
    @JoinColumn(name = "stock_id",referencedColumnName = "id")
    Stock stock=null;

    @JsonManagedReference
    @OneToMany(mappedBy = "product",fetch = FetchType.LAZY,cascade = CascadeType.ALL)
    Set<ProductDetails> productDetails;
}
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@ToString
     @Entity
    public class Stock {
    @Id
    @Column(name = "id")
    Integer stockId;
    @Column(name = "inventory_count")
    Integer inventoryCount;
    @Column(name = "self_count")
    Integer selfCount;
    @JsonBackReference
    @OneToOne(mappedBy = "stock",cascade = CascadeType.ALL)
    Product product;
    }
@Entity
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor

public class Category {
    @Id
    @Column(name = "category_id")
    Integer categoryId;

    @Column(name = "category_name")
    String categoryName;



    @OneToMany(mappedBy = "category",cascade = CascadeType.ALL)
    @JsonBackReference
    List<Product> product;

    @Override
    public String toString() {
        return "Category{" +
                "categoryId=" + categoryId +
                ",categoryName='" + categoryName + '\'' +
                ",product=" + product +
                '}';
    }
}
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@ToString
@Entity
public class ProductDetails {
    @Id
    @Column(name = "id")
    Integer productDetailId;
    @Column(name = "cost")
    Double cost;
    @Column(name = "currency")
    String currency;
    @Column(name = "expiry_date")
    Date expiryDate;

    Integer supplierCode;

    @JsonBackReference
    @ManyToOne(fetch = FetchType.LAZY)
    Product product;
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)