java - 带有 sequence.nexval 的 Spring jdbc 插入语句
问题描述
我正在使用 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:错误:缺少表“approvalsubmission_ids”的 FROM 子句条目
解决方案
另一种选择是id
使用 PostgreSQL 类型serial
(或子类型: smallserial
,bigserial
)创建这些列。
https://www.postgresql.org/docs/9.5/datatype-numeric.html#DATATYPE-SERIAL
这样,您无需在insert
语句中指定列id
或其“相关值”,因为数据库将为您管理。
推荐阅读
- typescript - Express 无法读取 Chunked Post 数据
- c# - Chilkat FTP2 下载 (GetFile) 大文件 (≈12 GB)
- sql - 将 group by 从一个测量值插入另一个测量值
- c# - Sensenet:我可以将 lucene 索引文件存储在 azure 文件存储而不是 App_Data 文件夹中吗?
- php - 前置条件选择表单 - Laravel
- java - ObjectMapper - 线程安全和性能的最佳实践
- typescript - 实例化通用对象时出现类型错误
- php - 我怎样才能防止 EDD 销售捆绑产品而只销售实物产品
- javascript - 如何使用 vanilla javascript 从用户的媒体文件中获取频率?
- android - 如何在android studio中更改属性列的宽度