首页 > 解决方案 > javax.persistence.EntityNotFoundException:具有多对一映射的 Spring Data JPA

问题描述

我使用这个 json 请求填充了 cart 和 caritem 类 -

{
  "userId": "1246772",
  "cartItemRequests": [
    {
      "itemId": "12345",
      "quantity": 5
    }
  ],
  "discount": {
    "promoCode": "MYPROMO",
    "discountPercentage": 0
  }
}

我在响应中看到此错误 - javax.persistence.EntityNotFoundException: Unable to find cart.model.CartItem with id d3931cb8-ab81-4c1b-b722-841c7fcf2f77。

当我调试代码时,我能够看到购物车中存在的 cartItem 列表“d3931cb8-ab81-4c1b-b722-841c7fcf2f77”。但是,当我使用 Spring Data JPA 保存时,我看到了上述错误

@Entity
public class CartItem {

    @Id
    private String id;
    private String itemId;
    private int quantity;
    @ManyToOne
    private Cart cart;

    public CartItem() {
        this.id = UUID.randomUUID().toString();
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getItemId() {
        return itemId;
    }

    public void setItemId(String itemId) {
        this.itemId = itemId;
    }

    public int getQuantity() {
        return quantity;
    }

    public void setQuantity(int quantity) {
        this.quantity = quantity;
    }

    public Cart getCart() {
        return cart;
    }

    public void setCart(Cart cart) {
        this.cart = cart;
    }
}



@Entity
public class Cart {

    @Id
    private String id;
    private String userId;
    @OneToMany(fetch = FetchType.LAZY)
    private List<CartItem> cartItems;
    @Embedded
    private Discount discount;

    public Cart() {
        this.id = UUID.randomUUID().toString();
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getUserId() {
        return userId;
    }

    public void setUserId(String userId) {
        this.userId = userId;
    }

    public List<CartItem> getCartItems() {
        return cartItems;
    }

    public void setCartItems(List<CartItem> cartItems) {
        this.cartItems = cartItems;
    }

    public Discount getDiscount() {
        return discount;
    }

    public void setDiscount(Discount discount) {
        this.discount = discount;
    }
}

标签: javaspringspring-bootspring-data-jpa

解决方案


您可以使用以下一项检查更新您的代码吗:---

 @OneToMany(mappedBy = "Cart", fetch = FetchType.LAZY,
            cascade = CascadeType.ALL)
    private List<CartItem> cartItems;


 @ManyToOne(fetch = FetchType.LAZY, optional = false)
 private Cart cart;

推荐阅读