ConcurrentModificationException при вызове метода для каждого объекта в для каждого цикла - PullRequest
2 голосов
/ 09 июля 2020

В настоящее время я создаю корзину для покупок, и я хочу обновить товарный запас в моей базе данных для каждого товара в моей корзине после оформления заказа.

Товары хранятся в Session Scope как список Java Beans. Это мой сервлет проверки.

    protected void doGet(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {

    final HttpSession session = request.getSession();
    @SuppressWarnings("unchecked")
    List<CartItems> itemsInWc = (List<CartItems>) session.getAttribute("Cart");

    for (CartItems item : itemsInWc) {
        updateBestand(item.getInCart(), item.getSize(), item.getId(), item.getKat(), item.getName(), item.getBestand());
    }
}

Сначала я получаю список с элементами, затем перебираю элемент eatch и обновляю запас с помощью метода updateBestand.

public void updateBestand(int inCart, String size, int id, String kategorie, String name, int bestand)
                throws ServletException, IOException {
    
    int updateAnzal = bestand - inCart;

    try (Connection con = ds.getConnection();
                    PreparedStatement pstmt = con.prepareStatement("UPDATE " + kategorie + " SET " + size + " =?"
                                    + " WHERE artikelName = ? and id = ?")) {

        pstmt.setInt(1, updateAnzal);
        pstmt.setString(2, name);
        pstmt.setInt(3, id);

        pstmt.executeUpdate();

    } catch (Exception ex) {
        throw new ServletException(ex.getMessage());

    }

}

Но каждый раз, когда я вызываю свой checkOut-Servlet, он просто обновляет запас первого элемента в списке, а затем игнорирует ConcurrentModificationException.

java.util.ConcurrentModificationException
at java.util.ArrayList$Itr.checkForComodification(Unknown Source)
at java.util.ArrayList$Itr.next(Unknown Source)
at Servlets.UpdateBestandServlet.doGet(UpdateBestandServlet.java:40)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...