2013-05-29 54 views
1

我正在使用org.springframework.jdbc.object.SqlUpdate将日期插入到数据库中。我使用HSQL进行本地测试,使用Oracle进行服务器测试。Spring SQLUpdate将零时间的日期插入到数据库中

这是我SQLUPDATE级:

private class SQLInsertHistory extends SqlUpdate implements Serializable { 
    private static final long serialVersionUID = 1L; 

    public SQLInsertHistory(DataSource ds) { 
     setDataSource(ds); 
     setSql(INSERT_HISTORY_ENTRY); 
     declareParameter(new SqlParameter(Types.DATE)); // EXECUTING_DATE 
     declareParameter(new SqlParameter(Types.VARCHAR)); // EXECUTING_USER 
     declareParameter(new SqlParameter(Types.VARCHAR)); // FILENAME 
     declareParameter(new SqlParameter(Types.VARCHAR)); // MD5_CHECKSUM 
     declareParameter(new SqlParameter(Types.INTEGER)); // SUCCESSFULL_FLAG 
     declareParameter(new SqlParameter(Types.INTEGER)); // NEW_INSTITUTION_FLAG 
     declareParameter(new SqlParameter(Types.VARCHAR)); // FREE_TEXT 
     declareParameter(new SqlParameter(Types.VARCHAR)); // ENTRY_TYPE 
     compile(); 
    } 

public void insertHistoryEntry(HistoryEntryContainer entry) { 

     Object[] values = new Object[] { 
       new java.sql.Date(entry.getDate().getTime()), // EXECUTING_DATE 
       entry.getExecutingUser(), // EXECUTING_USER 
       entry.getFileName(), // FILENAME, 
       entry.getMd5(), // MD5_CHECKSUM 
       (entry.isSuccess() ? 1 : 0), // SUCCESSFULL_FLAG 
       (entry.isNewInstitution() ? 1 : 0), // NEW_INSTITUTION_FLAG 
       entry.getFreeText(), // FREE_TEXT 
       entry.getType().toString() }; 
     update(values); 
     log.debug((entry.isSuccess() ? "Successfull " : "Unsuccessfull ") 
       + entry.getType().toString() + " of File " 
       + entry.getFileName() + " recorded in DB."); 
    } 

} 

现在执行工作正常,但它总是与存储小时,分钟和秒= 0。任何想法做什么日期?

回答

3

您正在使用Types.DATE只包括DATE,而不是时间,使用Types.TIMESTAMP

用途:new java.sql.Timestamp(entry.getDate().getTime())时间转换成时间戳在地方new java.sql.Date(entry.getDate().getTime()), // EXECUTING_DATE

+0

感谢的人,是解决它。 – olkoza

相关问题