SSブログ

JDBCとMySQLのtimstamp型 [Java]

前回に引き続き、JavaアプリケーションからMySQLのtimestampへのアクセス実行で嵌った。

hibernateを利用してのDBアクセス実装なのだが、以下のようなカラムが存在すると、Java実行時に例外が発生する。

create_date timestamp default '0000-00-00 00:00:00' not null ,

例外内容

情報: could not read column value from result set: create20_0_0_; Value '0000-00-00 00:00:00' can not be represented as java.sql.Timestamp
2013/05/22 14:15:51 org.hibernate.util.JDBCExceptionReporter logExceptions
警告: SQL Error: 0, SQLState: S1009
2013/05/22 14:15:51 org.hibernate.util.JDBCExceptionReporter logExceptions
致命的: Value '0000-00-00 00:00:00' can not be represented as java.sql.Timestamp
org.hibernate.exception.GenericJDBCException: could not execute query

調べたところ、 JDBCのバージョンによっては、timestampにnullや'0000-00-00 00:00:00'が設定されていると、例外となるらしい。
実運用上は必ずシステム日時が設定されるので問題ないが、なんにせよ例外は許したくない。
例外キャッチして作り込みをする手もなくはないがあまり生産的とは言えない。まっとうな回避策はなさそうなのでカラムの型をdatetimeにし、not nullの制限もはずした。

すっきりしない…

Javaデータアクセス実践講座 (DB Magazine SELECTION)

Javaデータアクセス実践講座 (DB Magazine SELECTION)

  • 作者: 松信 嘉範
  • 出版社/メーカー: 翔泳社
  • 発売日: 2008/02/28
  • メディア: 単行本(ソフトカバー)

 


タグ:MySQL Java
nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:日記・雑感

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。