シナリオ:
XMLを受信し、それらを解析し(JAXBを使用)、解析されたデータをMySQL DBに永続化し(hibernateを使用)、将来の参照のためにxmlのコピーを保存するサーブレットがあります。解析が失敗した場合にも、この xml を保存します。このような場合、エラーの概要が記載された電子メールを受け取り、保存された xml をチェックして何が問題なのかの手がかりを探します。
操作はかなりスムーズに実行されます。サーブレットは、1 日あたり数千の xml を受け取ります。
問題:
少なくとも 1 日に 1 回、次のようなエラーが表示されます。
org.hibernate.exception.DataException: could not insert ..........
Caused by: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Incorrect datetime value: '20122012-01-22 15:20:51' for column 'createdAt' at row 1
他の「列」でもこのエラーが発生します。これらの列は、mysql 側とjava.sql.Timestamp
Java 側では日時型です。
受信した xml を見ると、正しい日付形式が表示されます:「2012-01-22 15:20:51」
何がうまくいかなかったのでしょうか?