为什么我的数据库仅在前两次 jsp 表单提交时成功更新?

Why does my database only update successfully on first two jsp form submissions?

好的,所以我有一个 jsp,它具有输入框,用户可以在其中插入整数。我的 Java servlet class 然后获取这些整数,将它们添加到当前在数据库中的相应值,然后将总数除以 formSubmissionCount 以获得平均值。同一个用户第一次和第二次提交统计数据时一切正常,但第三次(以及此后的每次)统计数据都没有计算出正确的数字(提交给数据库的新值每次都只是减少)。我不确定为什么会这样,这是我在 doPost():

中的逻辑
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
        throws ServletException, IOException {

    // 1. GET SUBMITTED JSP FORM VALUES
    String roundScore = req.getParameter("score_avg").toString();
    double roundScoreDouble = Double.parseDouble(roundScore);
    String roundPutts = req.getParameter("putts").toString();
    double puttsDouble = Double.parseDouble(roundPutts);*/
    // 2. GET LOGGED IN USER DETAILS
    Session session = HibernateUtil.createSessionFactory().openSession();
    session.setFlushMode(FlushMode.MANUAL);
    ManagedSessionContext.bind(session);
    session.beginTransaction();
    Criteria criteria = session.createCriteria(UserBean.class);
    Authentication authentication = SecurityContextHolder.getContext()
            .getAuthentication();
    String userLoggedIn = authentication.getName();
    List<UserBean> retrievedUser = criteria.add(
            Restrictions.like("username", userLoggedIn)).list();
    // 3. CREATE NEW UPDATED VALUES
    for (UserBean string : retrievedUser) {
        double calculateSubmitCount = string.getSubmitCount() + 1;
        double addRoundScoreValues = roundScoreDouble
                + string.getScore_avg();
        double newRoundScore = addRoundScoreValues / calculateSubmitCount;
        double truncatedRoundScore = new BigDecimal(newRoundScore)
                .setScale(1, BigDecimal.ROUND_HALF_UP).doubleValue();
        string.setScore_avg(truncatedRoundScore);
        double addPuttsValues = puttsDouble + string.getPutts();
        double newPuttsTotal = addPuttsValues / calculateSubmitCount;
        double truncatedPutts = new BigDecimal(newPuttsTotal)
        .setScale(1, BigDecimal.ROUND_HALF_UP).doubleValue();               
        string.setPutts(truncatedPutts);
        string.setSubmitCount(string.getSubmitCount() + 1);
        ManagedSessionContext.unbind(HibernateUtil.createSessionFactory());
        session.flush();
        session.getTransaction().commit();
    }
    if (session.getTransaction().wasRolledBack()) {
        req.getRequestDispatcher("/WEB-INF/jsps/error.jsp").forward(req,
                resp);
    } else {
        session.close();
        req.getRequestDispatcher("/WEB-INF/jsps/analysisoutcome.jsp")
                .forward(req, resp);
    }
} 

问题出在我的逻辑上,而不是数据类型上。我需要将数据库中的当前平均分数乘以当前提交计数值,然后将此值与用户输入的新值相加,最后将此总和除以提交计数加一的值。