Две сущности порождают странные - PullRequest
0 голосов
/ 19 февраля 2020

объект CartItem

 @Entity
    @Table(name="cart_item")
    public class CartItem {
        @Id
        @GeneratedValue(strategy = GenerationType.AUTO)
        private Integer cartItemId;

        private int quantity;

        private double price;

        @ManyToOne(cascade = CascadeType.ALL)
        @JoinColumn(name = "product_id")
        private Product product;

        @ManyToOne
        @JoinColumn(name = "cart_id")
        private Cart cart;

объект корзины

@Entity
@Table(name="cart")
public class Cart {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Integer cart_id;

    @OneToOne
    @JoinColumn(name = "user_id")
    @JsonIgnore
    private User user;

    @OneToMany(mappedBy = "cart", cascade = CascadeType.ALL,fetch=FetchType.EAGER)
    private List<CartItem> cartItem;

    private double totalPrice;

CartItemService

public void save(User user,CartItem cartItem,String name){
    Cart cart = cartRepository.findCartByUser(user);
    Product product = productRepository.findByName(name);
    cartItem.setProduct(product);
    cartItem.setCart(cart);
    cartItem.setQuantity(1);
    cartItem.setPrice(product.getPrice());
    cartItemRepository.save(cartItem);
}

Я не знаю, что не так, но я назначил каждому пользователю 1 корзина, и каждый раз, когда пользователь кладет что-то в корзину, или когда корзина создается, он добавляет +1 к идентификатору обеих сущностей (если есть 2 корзины и пользователь добавляет элемент в корзину, ItemCartId будет равен 3)

enter image description here

1 Ответ

0 голосов
/ 19 февраля 2020

Это потому, что используемая вами стратегия использует одну и ту же последовательность для генерации идентификаторов в нескольких таблицах. Замена на это должна решить вашу проблему:

@GeneratedValue(strategy = GenerationType.IDENTITY)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...