首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Java 8 LocalDateTime实现Spring数据JPA

问用Java 8 LocalDateTime实现Spring数据JPA
EN

Stack Overflow用户
提问于 2017-09-04 11:54:40
回答 1查看 5K关注 0票数 3

我最近几个月一直在使用Spring和MYSQL,这是一次非常成功和顺利的体验。在这里,我使用java 8 LocalDateTime存储日期时间字段,JPA自动将这些字段映射到mysql tinyblob列。

最近,我需要通过脚本向系统添加一些数据。为了填充日期时间列,我创建了MYSQL时间戳变量并插入到tinyblob列中。但是,系统开始抱怨SerializationException,其根本原因是转换后的datetime列。然后,我查看了通过应用程序插入的日期时间列,如下所示

代码语言:javascript
复制
select CAST(drop_off_time AS CHAR(10000) CHARACTER SET utf8) From job

​

​

看起来,当您通过应用程序插入时,它是作为某种java序列化插入的。但是,通过mysql脚本,我们无法复制该功能。

现在我有两个选择。1)我需要找到一种方法来编写mysql脚本来生成类似于应用程序的日期时间列。2)我需要将Spring映射从tinyblob更改为mysql脚本可以支持的另一种数据类型

感谢你的帮助

谢谢,凯斯

编辑

在下面的回答和评论之后,我找到了一个简单的解决方案。

如果您使用Hibernate 5.0+,您可以顺便进来。

代码语言:javascript
复制
<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-java8</artifactId>
    <version>${hibernate.version}</version>
</dependency>

然后,系统开始将java 8 LocalDateTime参数映射到mysql DATETIME列。

EN

回答 1

Stack Overflow用户

发布于 2017-09-04 12:11:37

根据JPA2.1JPA2.1JPA2.1JPA 2可能在短时间内不支持LocalDateTime,2将是正式的)。Hibernate 5支持“早期发布”

可移植和支持,因为JPA2.0是javax.persistence.AttributeConverter,在所有JPA提供程序上都能很好地工作(并且在Hibernate 5上没有什么不好的地方)

代码语言:javascript
复制
@Converter(autoApply = true)
public class LocalDateAttributeConverter implements AttributeConverter<LocalDate, Date> {

@Override
public Date convertToDatabaseColumn(LocalDate locDate) {
    return (locDate == null ? null : Date.valueOf(locDate));
}

@Override
public LocalDate convertToEntityAttribute(Date sqlDate) {
    return (sqlDate == null ? null : sqlDate.toLocalDate());
}
}
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46036493

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档