2012-02-13 5 views
1

シナリオ:私は、XMLSを受信し、それらを解析サーブレットは(JAXBを使用して)、MySQLのDBに解析されたデータを持続しているSQLエラー - 日時のデータ切り捨て - 使用したJava /休止/タイムスタンププロパティ

(使用hibernate)、将来の参照のためにXMLのコピーも保存します。 解析に失敗したときにもこのxmlを保存します。 これらのケースでは、エラーの概要を記載した電子メールを受け取り、保存されたxmlで何が問題になったかの手がかりを確認します。

操作はかなりスムーズに実行されます。サーブレットは1日あたり数千xmlのXMLを受信します。

問題:

は、少なくとも一日一回私はこのようなエラーが出る:

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側のdatetime型で、java側のjava.sql.Timestampです。

私は、正しい日付形式を参照してください受け取ったXMLを見てみましょう:「2012年1月22日15時20分51秒」

間違っている可能性がどのような任意のアイデア?

+0

本当に奇妙に見えます。私はこのテーブルにデータを挿入する別のプロセスがあると思われます(多分HibernateではなくHQL?)。 'org.hibernate.SQL = TRACE'ログレベルを設定して、ソースが期待どおりになっていることを確認してください。 –

+0

私は数日後にこれを試してみて、何か別のものに取り組んでいます... – samz

答えて

0

最近このエラーが発生していません。 私は最近、SimpleDateFormatの使用で並行性の問題を処理していたので、おそらくそれが問題でした。

+0

うん、それだった。私はタイムスタンプを解析するためにjaxb値アダプタを解析していましたが、スレッドセーフではないタイムスタンプフォーマッタを使用しました。スレッドセーフに変更した後は、すべて正常に動作します。 – samz

関連する問題