Как проверить наличие товара в корзине и обновить его до 1, если пользователь добавит его снова? - PullRequest
0 голосов
/ 29 октября 2010

У меня проблемы с оператором 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 Что с этим происходит?

1 Ответ

1 голос
/ 30 октября 2010

Вы можете удалить 2 строки

       cartPk.setUserid(userid);
       cartPk.setItemid(itemid);

Я думаю, когда вы назначаете cart = cartDAO.getUserItemCart(userid, itemid);

ИД пользователя и itemid имеют значение.

...