2015-02-19 5 views
2

Я новичок в использовании PostgreSQL, я пытаюсь вставить значения из spring jdbc. Вот мой запросВставить запрос в PostgreSQL

private static final String ADD_SELLER = "INSERT INTO SELLER(SELLER_ID, FIRST_NAME, LAST_NAME, TIN_NO, COMPANY_NAME, COMPANY_LOGO, EPCH_NO, VAT_NO, CST_NO, COMMISSION, STATUS, APPROVED, CREATED_DTTM) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, CURRENT_TIMESTAMP)"; 

И мой код выглядит следующим образом

public void addSeller(SellerDO sellerDO)throws UserDataException { 
    JdbcTemplate jdbcTemplate = this.getJdbctemplate(); 
    long sellerId = jdbcTemplate.queryForObject(ADD_SELLER, Long.class); 
    sellerDO.setSellerId(sellerId); 
    int isSellerAdded = jdbcTemplate.update(ADD_SELLER, new Object[]{sellerId, sellerDO.getFirstName(), sellerDO.getLastName(), sellerDO.getTin_no(), sellerDO.getCompanyName(), sellerDO.getCompanyLogo(), sellerDO.getEpch_no(), sellerDO.getVat_no(), sellerDO.getCst_no(), sellerDO.getCommission(), sellerDO.getStatus(), sellerDO.getApproved()}); 
    try { 
     if(isSellerAdded == 0){ 
      log.info("Seller registration failed"); 
     } 
    } catch (DataAccessException dataAccessException) { 
     throw new UserDataException("Seller registration failed", dataAccessException); 
    } 
} 

Когда я выполнить тест для выше методы я получаю сообщение об ошибке, как

org.springframework.jdbc.BadSqlGrammarException: StatementCallback; bad SQL grammar [INSERT INTO SELLER(SELLER_ID, FIRST_NAME, LAST_NAME, TIN_NO, COMPANY_NAME, COMPANY_LOGO, EPCH_NO, VAT_NO, CST_NO, COMMISSION, STATUS, APPROVED, CREATED_DTTM) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, CURRENT_TIMESTAMP)]; nested exception is org.postgresql.util.PSQLException: ERROR: syntax error at or near ","

Вот контекст конфигурация

<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> 
    <constructor-arg ref="dataSource" /> 
</bean> 

<bean id="transactionManager" 
    class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> 
    <property name="dataSource" ref="dataSource" /> 
</bean> 

<bean id="dataSource" 
    class="org.springframework.jdbc.datasource.DriverManagerDataSource"> 
    <property name="driverClassName" value="org.postgresql.Driver" /> 
    <property name="url" value="jdbc:postgresql://localhost:5432/xxxx" /> 
    <property name="username" value="postgres" /> 
    <property name="password" value="xxxxx" /> 
</bean> 
+0

В вашем запросе есть '' APPROVED, CREATED_DTTM'', но с ошибкой '' CREATED_DTTM, MODIFIED_DTTM''. Я думаю, у вас разные запросы. – Kristiyan

+0

Я обновил свой код ошибки. –

+0

Я не очень хорошо знаком, но вы можете изменить CURRENT_TIMESTAMP с переменной из Java или попытаться использовать кавычки типа 'CURRENT_TIMESTAMP''? – Kristiyan

ответ

0

Я не вижу причины наличия current_timestamp в самой строковой переменной. Возможно, вы захотите заменить элемент метки времени? в переменной ADD_SELLER и использовать CURRENT_TIMESTAMP как аргумент в вызове jdbcTemplate.update (..).

Смежные вопросы