私はここ数ヶ月のうちにSpring Data JPAとMYSQLを扱ってきました。そこに私は日付のフィールドを格納するためにJava 8のLocalDateTimeを使用しており、JPAは自動的にこれらのフィールドをmysql tinyblobカラムにマップします。Spring Data JPA with Java 8 LocalDateTime
最近私は、スクリプトを使ってシステムにデータを追加する必要がありました。日付時間の列を埋めるために、私はMYSQL TIMESTAMP変数を作成し、tinyblob列に挿入しました。しかし、システムはSerializationExceptionを訴え始め、その原因はこの変換されたdatetime列です。 はその後、私はそれはあなたがアプリケーションを介して挿入すると、それがJavaのシリアライズのいくつかの種類として挿入のようになります
select CAST(drop_off_time AS CHAR(10000) CHARACTER SET utf8) From job
以下のようにアプリケーションを介して挿入された日付時刻の列を見ていました。しかし、mysqlスクリプトを使って、その機能を複製することはできません。
今私は2つの選択肢があります。 1)アプリケーションに似たDate timeカラムを生成するためのmysqlスクリプトを書く方法を見つける必要があります。 2)私は、mysqlのスクリプトが
あなたの助けに感謝
おかげで、 Keth
EDIT
をサポートすることができ、別のデータ型にTINYBLOBから春データJPAマッピングを変更する必要があります下記の回答とコメントに続いて、簡単な解決策を見つけることができました
Hibe rnate 5.0+、あなたが
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-java8</artifactId>
<version>${hibernate.version}</version>
</dependency>
にドロップすることができますが、システムはoficially(おそらくJPA短時間でsuppoortedされていないJPA 2.1のLocalDateTimeによると
ポータブルおよびサポートされている「早期リリース」として5サポートを休止8日時APIはサポートされておらず、タイムスタンプの代わりにバイナリとして保存されます。 –
LocalDateTimeはブロブに格納しないでください。そのため、日付で照会することが不可能になり、Java以外の値で値を使用することが不可能になり、必要以上のディスク容量が必要になります。最近のバージョンのHibernateは、日付/タイムスタンプ(http://docs.jboss.org/hibernate/orm/5.2/userguide/html_single/Hibernate_User_Guide.html#basic-providedを参照)として保存され、そのままの状態でLocalDateTimeをサポートします。どのバージョンのスプリング/ハイバネーションを使用していますか? –
このdepyendencyをチェックすると、hibernateにjava8 datetime apiサポートが追加されます:http://search.maven.org/#search%7Cgav%7C1%7Cg%3A%22org.hibernate%22%20AND%20a%3A%22hibernate- java8%22 私が知っている限り、Hibernate 5で利用できるのは –