Java9中使用jpa,如何正确地在Spring Data JPA和Jackson中用上Java 8的时间相关API(即JSR 310也即java.time包下的众神器)...
用过的肯定知道,JSR310的时间API真的是神器,极大的方便了在Java中对时间操作的过程。
东西是挺好,平常时候直接用就行了,毕竟这个也能自由的跟旧的Date等API转换,虽然写起来会略啰嗦,如:
LocalDateTime nowLocalDateTime = LocalDateTime.now();
Date nowDate = Date.from(start.atZone(ZoneId.systemDefault()).toInstant());
不过为了更方便的操作时间也能忍了。
可毕竟是新东西,在之前做项目的时候就遇到了这么两个问题。
与Spring Data JPA结合
我想在Spring Data JPA(以下简称JPA,但注意JPA其实是一种规范)中的@Entity实体类中将LocalDateTime作为属性的类型来使用,如:
@Entity
public class Product {
...
@Column
private LocalDateTime gmtCreate;
...
}
结果问题来了,当时具体抛什么异常忘记了,大概是什么无法反序列化之类的,总之就是没法用。
其实很简单,熟悉JPA的应该已经想到了,要用上javax.persistence.AttributeConverter了,网上也有不少自己实现这个转化器的文章,而Spring Data JPA后续也已经有了针对JSR310的实现也即org.springframework.data.jpa.convert.threeten.Jsr310JpaConverters。
而如果你是Spring Boot项目的话,用起来就超级简单了,只需要在启动类上增加一个注解,将Jsr310JpaConverters注册为Bean就可以实现用LocalDateTime作为实体类的属性类型了。注解如下:
@EntityScan(basePackageClasses = {Jsr310JpaConverters.class})
与Jackson结合
后端的问题解决了,可当前端用到的时候,却又出现了问题,具体抛出什么异常我也给忘了([捂脸]),大概还是不能反序列化之类的吧。
求助搜索引擎后了解到,原来Jackson默认也是没有兼容JSR310的时间API的,所以这时候需要引入对应的Jackson的相关模组(那个关键类就叫com.fasterxml.jackson.datatype.jsr310.JavaTimeModule),如果是使用Gradle的话也就是引入如下依赖:
compile("com.fasterxml.jackson.datatype:jackson-datatype-jsr310")
OK,完美搞定~
Java9中使用jpa,如何正确地在Spring Data JPA和Jackson中用上Java 8的时间相关API(即JSR 310也即java.time包下的众神器)...相关推荐
- springboot jpa sql打印_SpringBoot集成Spring Data JPA以及读写分离
相关代码:github OSCchina JPA是什么 JPA(Java Persistence API)是Sun官方提出的Java持久化规范,它为Java开发人员提供了一种对象/关联映射工具 来管理 ...
- Spring Data JPA使用必备(三):Spring Data JPA自定义SQL写法
Spring Data JPA的前两篇已经写了通过方法名格式自动生成SQL,也简单的提到了@Query注解.但是往往真正的业务逻辑里面,这些是完全不够用的,涉及到一些稍微复杂一点的查询就会有点问题,如 ...
- Spring Data JPA使用必备(二):Spring Data JPA方法命名规则实现SQL自动生成
Spring data JPA是一个好东西,但是对于很多习惯于写SQL,直接怼数据库的人来说,这个真的用不习惯,还被一致认为是一个不易于程序员发展的技术.因为JPA提供了标准的封装,在操作数据库的时候 ...
- 【Spring Data JPA自学笔记三】Spring Data JPA的基础和高级查询方法
文章目录 调用接口的基础方法查询 Repository CrudRepository PagingAndSortingRepository JPARepository JpaSpecification ...
- JPA踩坑记:Spring Data Jpa 更新为null的问题(save方法保存时null值会被更新到数据库)
关键字: JPA更新为null,JPA save null,JPA保存为null 今天使用jpa的save方法时发现null字段也会被更新到数据库,这个直接把数据库数据覆盖的行为很可怕,果断研究了一下 ...
- Spring Boot中使用Spring Data JPA示例
JPA是Java Persistence API的简称,是sun公司早期推出的Java持久层规范,目前实现JPA规范的主流框架有Hibernate.OpenJPA等.Hibernate框架是当前较为流 ...
- Spring Data JPA 与 MyBatis 对比,你喜欢用哪个?
来源:jianshu.com/p/3927c2b6acc0 概述 Spring Data JPA是Spring Data的子模块.使用Spring Data,使得基于"repositorie ...
- SpringBoot学习笔记:Spring Data Jpa的使用
更多请关注公众号 Spring Data Jpa 简介 JPA JPA(Java Persistence API)意即Java持久化API,是Sun官方在JDK5.0后提出的Java持久化规范(JSR ...
- 使用Spring Data REST将Spring Data JPA存储库导出为REST服务
Spring Data模块提供了各种模块,以统一的方式处理各种类型的数据源,如RDBMS,NOSQL存储等. 在我以前的文章SpringMVC4 + Spring Data JPA +使用JavaCo ...
- hql实例 jpa_SpringBoot学习笔记九:Spring Data Jpa的使用
Spring Data Jpa 简介 JPA JPA(Java Persistence API)意即Java持久化API,是Sun官方在JDK5.0后提出的Java持久化规范(JSR 338,这些接口 ...
最新文章
- Linux下分区、格式化、自动挂载
- 创建web服务器||HTTP协议的概念||报文||HTTP请求与响应处理——未完待续
- OD使用教程18 - 调试篇18
- windows系统登陆就注销如何解决,系统登陆就注销的解决办法
- WCF中的ServiceHost初始化两种方式(宿主)
- 设为首页 和 收藏本站js代码 兼容IE,chrome,ff
- Git 将本地的一个分支上的代码合并到本地的另一个分支
- Jquery—JQuery对radio的操作(01)
- 支付那些事儿III---一个BD汪眼中的产品I
- unity下载及安装
- 一步步教你写一份优秀的软件测试简历(带样例)
- word2013+endnotex8参考文献导入
- 为PDF批量添加书签
- linux安装使用7zip
- CodeBlock 常用快捷键
- NoteExpress 文献管理软件及使用相关问题
- 自动薅羊毛技术方案总结
- STM32开发笔记106:解决ST-LINK的Old ST-LINK firmware/ST-LINK already usde问题
- Magento常用插件整理收集
- 读《Scratch 2.0 少儿游戏趣味编程》