Spring jdb c оператор вставки с sequence.nexval - PullRequest
0 голосов
/ 14 июля 2020

Я использую Spring и Postgres и пытаюсь выполнить INSERT. В таблице approvalsubmission есть последовательность под названием approvalsubmission_ids.

Поэтому я пытаюсь использовать nextval для заполнения столбца id. Но я получаю сообщение об ошибке.

Вопрос

Как мне создать запрос?

У меня следующий запрос:

public void updateApprovalSubmission(String corporateTravelRequestUri, String approvalRequestId, byte[] approvalRequestXml, Date requestedDate) {
    String query = "INSERT INTO approvalsubmission(" +
            "id, approvalrequestid, conclusion, conclusionmessage, modifyable, resubmissionof, requesteddate, requested, conclusiondate, approvalrequestxml, escalationlevel) " +
            "VALUES (approvalsubmission_ids.nextval, :approvalrequestid, :conclusion, :conclusionmessage, :modifyable, :resubmissionof, :requesteddate, :requested, :conclusiondate, :approvalrequestxml, :escalationlevel);";
    MapSqlParameterSource parameters = new MapSqlParameterSource();
    parameters.addValue("approvalrequestid", approvalRequestId);
    parameters.addValue("conclusion", null);
    parameters.addValue("conclusionmessage", null);
    parameters.addValue("modifyable", null);
    parameters.addValue("resubmissionof", null);
    parameters.addValue("requesteddate", requestedDate);
    parameters.addValue("requested", corporateTravelRequestUri);
    parameters.addValue("conclusiondate", null);
    parameters.addValue("approvalrequestxml", approvalRequestXml);
    parameters.addValue("escalationlevel", null);

    int noRowsUpdates = namedParameterJdbcTemplate.update(query, parameters);
    logger.info("updateApprovalSubmission: "+noRowsUpdates+" row updated for corporateTravelRequestUri: "+corporateTravelRequestUri+" and approvalRequestId: "+approvalRequestId);
}

Вызывает следующую ошибку:

org. postgresql .util.PSQLException: ОШИБКА: отсутствует запись FROM-clause для таблицы «Approvalulsubmission_ids»

1 Ответ

0 голосов
/ 14 июля 2020

Другой вариант - создать эти id столбцы, используя PostgreSQL тип serial ( или подтипы: smallserial, bigserial).

https://www.postgresql.org/docs/9.5/datatype-numeric.html#DATATYPE -SERIAL

Таким образом, вам не нужно будет указывать в операторе insert ни столбец id, ни его «связанное значение», потому что база данных будет управлять этим для ты.

...