У меня проблемы с оператором JPQL, я создал NameQuery, а затем:
@NamedQuery(name = "Cart.findExistCart", query = "SELECT c FROM Cart c WHERE c.cartPK.userid = :userid AND c.cartPK.itemid = :itemid "),
в bean-компоненте без сохранения состояния я создал один метод для активации этого запроса:
public Cart getUserItemCart(int userid,int itemid){
Query query = em.createNamedQuery("Cart.findExistCart");
// query.setParameter("userid", userid);
query.setParameter("itemid", itemid);
query.setParameter("userid", userid);
return (Cart) query.getSingleResult();
}
после этого в JSF Managed Bean я создаю один тест метода, если в БД существуют идентификатор пользователя и идентификатор элемента, он выведет на сервер идентификатор пользователя и itemid:
public void addtoCart(Items item){
this.items = item;
int userid = getMemberLoginController().getUser().getUserid().intValue();
int itemid = getItems().getItemid().intValue();
if (cartDAO.getUserItemCart(userid, itemid) != null ){
// cart = cartDAO.getUserItemCart(userid, itemid);
cartPk.setUserid(userid);
cartPk.setItemid(itemid);
cart.setCartPK(cartPk);
cart = cartDAO.getUserItemCart(userid, itemid);
System.out.println(cart.getCartQuantity());
}
но когда клиент добавляет элемент A в базу данных, а затем добавляет элемент B в базу данных и снова добавляет элемент A в базу данных, он не печатает идентификатор элемента с идентификатором элемента, он печатает идентификатор элемента с элементом B. Почему?
если я создаю оператор выбора findByItemid, он работает хорошо, если я делаю по требованию, это означает, что когда нажимаешь добавить А, затем нажимаешь добавить В, и снова добавляешь А, он печатает идентификатор 1-2-1, но если я использую оператор выбора, найди корзину по ItemId UserId это не работает, он напечатает itemid 1-2-2
Что с этим происходит?