Невозможно удалить или обновить родительскую строку: ограничение внешнего ключа не выполняется (gopick
. orders_paid_items
, ОГРАНИЧЕНИЕ FKeeefhbl6j5xhs7nnt5mn530f8
ИНОСТРАННЫЙ КЛЮЧ (paid_items_product_id
, paid_items_user_id
) ССЫЛКИ cart
(product_id
, user_id
))
Корзина ниже
@Entity
@ToString
@EqualsAndHashCode
@IdClass(CartIdPk.class)
public class Cart implements Serializable {
@Column(unique = true)
private Long id = Long.parseLong(String.format("%06d", new Random().nextInt(999999)));
@JsonIgnore
@Id
@ManyToOne(fetch = FetchType.LAZY, optional = false)
@JoinColumn(name = "user_id", nullable = false)
private User user;
private CartStatus cartStatus = CartStatus.IN_CART;
@Id
private int productId;
private int quantity = 0;
@Column(length = 10, nullable = true)
private String discount;
@Column(length = 30, nullable = true)
private String paymentRef;
@JsonIgnore
@Column(insertable = false, updatable = true)
@UpdateTimestamp
private Timestamp lastModified;
@CreationTimestamp
private Timestamp dateCreated;
}
Id class Object CartIdPk
@NoArgsConstructor
@AllArgsConstructor
@lombok.Data
public class CartIdPk implements Serializable {
private Long user;
private int productId;
}
Orders Entity ниже
@lombok.Data
@Entity
public class Orders implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@JsonIgnore
@ManyToOne(fetch = FetchType.LAZY, optional = false)
@JoinColumn(name = "user_id", nullable = false)
private User user;
@OneToMany(fetch = FetchType.LAZY)
private Collection<Cart> paidItems;
@JsonIgnore
@Column(insertable = false, updatable = true)
@UpdateTimestamp
private Timestamp lastModified;
@CreationTimestamp
private Timestamp dateCreated;
}
Когда я пытаюсь удалить из таблицы сущностей корзины, он отлично работает, если productId
отсутствует в сгенерированном orders_paid_items
, но если он есть, он выдает ошибку, как указано выше.
Удаление элемент из таблицы корзины с использованием метода удаления по умолчанию CrudRepository
, как показано ниже
cartDataService.remove(cartDataService.find(cartId));