Подготовленный Java оператор, выбрасывающий SQLIntegrityConstraintViolationException: недопустимый аргумент (ы) в вызове - PullRequest
0 голосов
/ 07 октября 2019

Я пытаюсь вставить запись в БД (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-й при отладке.

Я удалил все записи из базы данных. БД пуста и не имеет ограничений, только первичный ключ.

Может кто-нибудь помочь мне в этом вопросе. Почему это происходит и как я могу решить эту проблему?

Ответы [ 2 ]

0 голосов
/ 16 октября 2019

Эта проблема решена. Это был вопрос сборки. Он не брал обновленный код, поэтому получал эту ошибку. Удалил все из .m2 dir и собрал его снова, и эта ошибка исчезла.

0 голосов
/ 07 октября 2019

SQLIntegrityConstraintViolationException указывает на нарушение ограничения БД. Проверьте наличие первичных / уникальных / внешних ключей в таблице «ABC». На основании оператора вставки можно предположить, что uid должен быть уникальным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...