ошибка: после закрытия оператора операции запрещены - PullRequest
0 голосов
/ 09 апреля 2020

Я пытаюсь извинить этот код, но у меня есть эта ошибка, я знаю, что должен закрыть соединение с

preparedStatement.close() 

, но он закрывается до завершения обработки, и это дает мне следующую ошибку

Caused by: java.sql.SQLException: No operations allowed after statement closed.

мой код

    private void fakesAssociate(List<Map<String, Object>> Employees) {
    coreEmployees.forEach(row -> {
        try {
            myrefJdbcTemplate.update("INSERT INTO `n_associate` (`active`, `first_name`, `birthday`) VALUES ( ?, ?, ? );", preparedStatement -> {
                   preparedStatement.setBoolean(1, true);
                   preparedStatement.setString(2, String.valueOf(row.get("usual_first_name")));

                Date birthdate = ((Date) row.get("birth_date"));
                if (birthdate != null) {
                    Calendar calendar = Calendar.getInstance();
                    calendar.setTime(birthdate);
                    calendar.set(Calendar.YEAR, 1970);
                    preparedStatement.setDate(3, new Date(calendar.getTime().getTime()));
                } else {
                    preparedStatement.setDate(3, null);
                }

                preparedStatement.close();
            });

            });
        } catch (DataIntegrityViolationException e) {
            String queryAssociate = "UPDATE n_associate SET  `active`= ?  " +
                WHERE n_associate.first_name = ?;";

            myrefJdbcTemplate.update(queryAssociate, preparedStatement -> {

                    preparedStatement.setBoolean(1, false);
                preparedStatement.close();

            });
        }
    });
}

пожалуйста, помогите узнать, как его решить

1 Ответ

2 голосов
/ 09 апреля 2020

Не закрывайте заявление. JdbcTemplate нужно будет открыть, чтобы он мог выполнить его. JdbcTemplate позаботится о закрытии оператора, когда он закончит его использовать.

...