我一直在使用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只有 –