2017-07-27 19 views
1

私は、Spring JDBCテンプレートとともにHSQLDBを使用しようとしています。 Java 8のLocalDateTimeクラスを使用するまでは正常に動作します。HSQLDB、LocalDateTime、JdbcTemplate

import org.hsqldb.jdbc.JDBCDataSource; 
import org.springframework.core.io.ClassPathResource; 
import org.springframework.core.io.Resource; 
import org.springframework.jdbc.core.JdbcTemplate; 
import org.springframework.jdbc.datasource.init.ResourceDatabasePopulator; 

import java.time.LocalDateTime; 

    public class Test 
    { 
     public static void main(String[] args) throws Exception 
     { 
      JDBCDataSource dataSource = new JDBCDataSource(); 
      dataSource.setUser("SA"); 
      dataSource.setPassword(""); 
      dataSource.setUrl("jdbc:hsqldb:mem:db"); 

      Resource resource = new ClassPathResource("/test.sql"); 
      ResourceDatabasePopulator databasePopulator = new ResourceDatabasePopulator(resource); 
      databasePopulator.execute(dataSource); 

      JdbcTemplate template = new JdbcTemplate(dataSource); 
      template.update("INSERT INTO test VALUES (?)", LocalDateTime.now()); 
     } 
    } 

スクリプトは次のようになります:

私はこのコードを持っている

org.hsqldb.HsqlException: incompatible data type in conversion 

:私はそれを実行しようとすると、私は例外を取得します

CREATE TABLE test 
(
    datetime DATETIME NOT NULL, 
); 

アプリケーションのバックエンドで私はLocalDateTimeを使用します。どうすればこの作品を作れますか?

答えて

0

あなたはTimestamp.valueOf()を使用してjava.sql.TimestampLocalDateTimeを変換することによって、問題を回避することができるはずです。

JdbcTemplate template = new JdbcTemplate(dataSource); 
template.update("INSERT INTO test VALUES (?)", Timestamp.valueOf(LocalDateTime.now())); 
+0

は、それが動作する、ありがとうございます。 MySQLの場合、LocalDateTimeでも動作しました:) – BadQuestion