使用spring Jdbctemplate - Oracle DB将Date插入日期类型列

时间:2017-05-31 17:08:27

标签: java spring oracle jdbctemplate

我想在我的表格列“updatedDate”中插入日期,其中日期为列数据类型。我使用spring jdbctemplate进行数据持久化。我尝试将列值传递为 java.util.Date,java.sql.Date以及java.sql.Timestamp, ,但它们都不起作用。我收到以下错误:

  

java.sql.SQLDataException:ORA-01858:找到了数字所在的非数字字符

下面是我的插入代码。

public void insert(
        Hashtable<String, UploadError> errorCollection) {
    try {
        Set<String> keys = errorCollection.keySet();
        for (String key : keys) {
            UploadError contractUploadVO = errorCollection.get(key);
            String contract_error_sql = "insert into TARIFF_LOG("
                    + "ERR_MSG, JOB_ID, CRTD_DTT, CRTD_BY, Regn, UPDT_BY, UPDT_DTT)  "
                    + "values(:errorMsg, :jobId, :createdDate, :createUser, :region, :updatedBy, :updatedDate)";
            Map<String, Object> paramMap = new HashMap<String, Object>();
            paramMap.put("errorMsg", contractUploadVO.getErrMsgSearch());
            paramMap.put("jobId", contractUploadVO.getJobIDSearch());
            paramMap.put("createUser", contractUploadVO.getCreatedByUser());
            paramMap.put("createdDate", "SYSDATE");
            paramMap.put("region", contractUploadVO.getRegion());
            paramMap.put("updatedBy", contractUploadVO.getUpdatedByUser());
            paramMap.put("updatedDate", new java.sql.Date(contractUploadVO.getUpdatedDate().getTime())); 
            getNamedJdbcTemplate().update(contract_error_sql, paramMap);
        }

    } catch (Exception e) {
        Logger.getInstance().fatalEvent(getClass(),"insert", e.getMessage(), e); 
    }
}

如果我在updatedDate中传递“SYSDATE”而不是“new java.sql.Date(contractUploadVO.getUpdatedDate()。getTime())”,那么它的工作正常。

请帮帮我,为什么我得到ORA-01858:发现非数字字符错误?

0 个答案:

没有答案
相关问题