Я пытаюсь вставить запись в БД (Oracle) через код Java. Когда он готовит оператор в это время, он генерирует исключение
java.sql.SQLIntegrityConstraintViolationException: недопустимые аргументы в вызове
в строке кода ниже:
PreparedStatement ps = connection.prepareStatement(INSERT_QUERY);
и запрос вставки:
private static final String INSERT_QUERY = "INSERT INTO ABC ( uid,created_datetime,status,update_datetime,b_id,ref_no,ref_dt,sor,b1_id,c_code,base,name,src,trn_date,country,pr,cv,features,scoring_time_ms,scoring_request_time_ms,preprocessing_time_ms,postprocessing_time_ms,overall_time_ms )VALUES ( ?,current_timestamp,?,current_timestamp,?,?,?,?,?,?,?,?,?,current_timestamp,?,?,?,?,?,?,?,?,? )";
Когда я отлаживал код, я обнаружил, что при подготовке оператора connection.prepareStatement(INSERT_QUERY);
запрос вставки выглядит следующим образом:
INSERT INTO ABC ( uid,created_datetime,status,update_datetime,b_id,ref_no,ref_dt,sor,b1_id,c_code,base,name,src,trn_date,country,pr,cv,features,scoring_time_ms,scoring_request_time_ms,preprocessing_time_ms,postprocessing_time_ms,overall_time_ms )VALUES ( ?,systimestamp,?,systimestamp,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,? )
Он меняет current_timestamp на systimestamp, а также у меня в запросе 3 current_timestamp и отсутствует 3-й при отладке.
Я удалил все записи из базы данных. БД пуста и не имеет ограничений, только первичный ключ.
Может кто-нибудь помочь мне в этом вопросе. Почему это происходит и как я могу решить эту проблему?