我一直在使用Spring Data JPA和MYSQL最近幾個月,這是一個非常成功和流暢的體驗。在那裏,我使用java 8 LocalDateTime來存儲日期時間字段,JPA自動將這些字段映射到mysql tinyblob列。Spring Java JPD與Java 8 LocalDateTime
最近我有一個要求通過腳本添加一些數據到系統。爲了填充日期時間列,我創建了MYSQL TIMESTAMP變量並插入到tinyblob列中。但是系統開始抱怨SerializationException,並且根本原因是這個轉換後的datetime列。 然後我看了一下通過應用插入日期時間列如下
select CAST(drop_off_time AS CHAR(10000) CHARACTER SET utf8) From job
它看起來像當你插入通過應用程序,它插入一些類型的Java序列化。然而,通過一個mysql腳本,我們不能複製該功能。
現在我有兩個選擇。 1)我需要找到一種方法來編寫一個mysql腳本來生成類似於應用程序的日期時間列。 2)我需要從TINYBLOB更改Spring數據JPA映射到哪個MySQL的腳本可以支持
另一種數據類型感謝您的幫助
感謝, Keth
編輯
在遵循下面提供的答案和評論後,我能夠找到一個簡單的解決方案
如果您使用Hibe rnate 5.0+,您可以在
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-java8</artifactId>
<version>${hibernate.version}</version>
</dependency>
下降然後系統開始在MySQL的DATETIME列
根據其休眠版本的Java 8日期時間API不受支持,並且將以二進制形式存儲,而不是時間戳。 –
LocalDateTime不應存儲在斑點中。這使得無法在日期上進行查詢,無法在Java以外的任何地方使用該值,並且佔用的磁盤空間比所需的多得多。最近的Hibernate版本支持LocalDateTime,它存儲爲日期/時間戳(參見http://docs.jboss.org/hibernate/orm/5.2/userguide/html_single/Hibernate_User_Guide.html#basic-provided)。你使用的是哪個版本的spring/hibernate? –
檢查這個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只有 –