Я строю приложение электронной коммерции, используя Spring Boot и JPA. Я сталкиваюсь с проблемой, когда пользователи не могут добавить несколько продуктов в свою корзину. Первый продукт добавляет успешно, но попытка добавить второй продукт приводит к уникальному нарушению ограничений. Как я могу его решить?@Entity
@Table(name = "users")
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Data
public class AppUser implements UserDetails {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
private long id;
@Column(unique = true)
private String username;
private String firstname;
@Column(unique = true)
private String email;
private String phone;
private String password;
@Enumerated(EnumType.STRING)
private Role role;
private String address;
private Date createdAt;
@OneToMany(mappedBy = "user", cascade = CascadeType.ALL, orphanRemoval = true)
private List carts = new ArrayList();
@OneToMany(mappedBy = "user", cascade = CascadeType.ALL, orphanRemoval = true)
private List
products = new ArrayList();
@OneToMany(mappedBy = "user", cascade = CascadeType.ALL, orphanRemoval = true)
private List orders = new ArrayList();
@Entity
@Table(name = "carts")
public class Cart {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
private long id;
private long productId;
private int quantity;
private Date createdAt;
@ManyToOne
@JoinColumn(name = "user_id", nullable = false)
@JsonIgnore
private AppUser user;
}
< /code>
my cart service < /p>
public Cart addProductToCart(Cart newCart, AppUser user) {
Optional existingCart = cartRepo.findCartByIdAndUser(newCart.getProductId(), user);
int productInventoryCount = productRepo.findById(newCart.getProductId()).get().getInventoryCount();
if (existingCart.isPresent()) {
Cart cart = existingCart.get();
if ((cart.getQuantity() + newCart.getQuantity()) > productInventoryCount) {
throw new InsufficientInventoryException("Insufficient inventory for the requested quantity.");
}
cart.setQuantity(cart.getQuantity() + newCart.getQuantity());
return cartRepo.save(cart);
}
if (newCart.getQuantity() > productInventoryCount) {
throw new InsufficientInventoryException("Insufficient inventory for the requested quantity.");
}
newCart.setCreatedAt(new Date());
return cartRepo.save(newCart);
}
< /code>
Это ошибка, которую я получаю: < /p>
2025-02-14t19:49:24.717+04:00 Ошибка 35347 --- [e- Коммерческий] [NIO-8080-EXEC-3] O.A.C.C.C.C. [. [. [/]. .dao.dataintegrityviolationException: не удалось выполнить оператор [дубликат «1» для ключа 'carts.uk64t7ox312pqal3p7fg9o503c2'] [вставьте в корзины (created_at, product_id, количество, пользовательскую, id) значения (? ]; SQL [вставьте в корзины (created_at, product_id, количество, user_id, id) значения (?,?,?,?,?)]; Ограничение [carts.uk64t7ox312pqal3p7fg9o503c2]] с основной причиной < /p>
Java.sql.sqlintegrityConstraintviolationException: Duplicate '1' for Key 'carts.uk64t7ox312pqal3p7fg9o503c2' kards.uk64t7ox312pqal3p7fg9o503c2 '< /pr /pr /pi.uk64t7ox312pqal3p7fg9o503c2' < /pi.uk64t7ox312pqal3p7fg9o503c2 '< /pr /pr /pr /pr /puard.uk64t7ox312pqal3p7fg9o' AI сообщает, что индекс удаления такого:
Альтер -таблицы Carts Drop Index uk64t7ox312pqal3p7fg9o503c2;
Но когда я пытаюсь удалить его, я получаю:
Код ошибки: 1553. Невозможно отказаться от индекса 'uk64t7ox312pqal3p7fg9o503c2': необходимо в ограничении внешнего ключа < /p>
Подробнее здесь: https://stackoverflow.com/questions/794 ... ntry-error
Spring Boot JPA: невозможно добавить несколько продуктов в CART - дубликат ошибка входа для уникального ограничения ⇐ JAVA
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Shopify Ajax API - /cart/update.js не работает для обновления количества продуктов
Anonymous » » в форуме Jquery - 0 Ответы
- 31 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Применить скидки, сгруппированные по категории продуктов в WooCommerce Cart
Anonymous » » в форуме Php - 0 Ответы
- 3 Просмотры
-
Последнее сообщение Anonymous
-