用过的肯定知道,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包下的众神器)...相关推荐

  1. springboot jpa sql打印_SpringBoot集成Spring Data JPA以及读写分离

    相关代码:github OSCchina JPA是什么 JPA(Java Persistence API)是Sun官方提出的Java持久化规范,它为Java开发人员提供了一种对象/关联映射工具 来管理 ...

  2. Spring Data JPA使用必备(三):Spring Data JPA自定义SQL写法

    Spring Data JPA的前两篇已经写了通过方法名格式自动生成SQL,也简单的提到了@Query注解.但是往往真正的业务逻辑里面,这些是完全不够用的,涉及到一些稍微复杂一点的查询就会有点问题,如 ...

  3. Spring Data JPA使用必备(二):Spring Data JPA方法命名规则实现SQL自动生成

    Spring data JPA是一个好东西,但是对于很多习惯于写SQL,直接怼数据库的人来说,这个真的用不习惯,还被一致认为是一个不易于程序员发展的技术.因为JPA提供了标准的封装,在操作数据库的时候 ...

  4. 【Spring Data JPA自学笔记三】Spring Data JPA的基础和高级查询方法

    文章目录 调用接口的基础方法查询 Repository CrudRepository PagingAndSortingRepository JPARepository JpaSpecification ...

  5. JPA踩坑记:Spring Data Jpa 更新为null的问题(save方法保存时null值会被更新到数据库)

    关键字: JPA更新为null,JPA save null,JPA保存为null 今天使用jpa的save方法时发现null字段也会被更新到数据库,这个直接把数据库数据覆盖的行为很可怕,果断研究了一下 ...

  6. Spring Boot中使用Spring Data JPA示例

    JPA是Java Persistence API的简称,是sun公司早期推出的Java持久层规范,目前实现JPA规范的主流框架有Hibernate.OpenJPA等.Hibernate框架是当前较为流 ...

  7. Spring Data JPA 与 MyBatis 对比,你喜欢用哪个?

    来源:jianshu.com/p/3927c2b6acc0 概述 Spring Data JPA是Spring Data的子模块.使用Spring Data,使得基于"repositorie ...

  8. SpringBoot学习笔记:Spring Data Jpa的使用

    更多请关注公众号 Spring Data Jpa 简介 JPA JPA(Java Persistence API)意即Java持久化API,是Sun官方在JDK5.0后提出的Java持久化规范(JSR ...

  9. 使用Spring Data REST将Spring Data JPA存储库导出为REST服务

    Spring Data模块提供了各种模块,以统一的方式处理各种类型的数据源,如RDBMS,NOSQL存储等. 在我以前的文章SpringMVC4 + Spring Data JPA +使用JavaCo ...

  10. hql实例 jpa_SpringBoot学习笔记九:Spring Data Jpa的使用

    Spring Data Jpa 简介 JPA JPA(Java Persistence API)意即Java持久化API,是Sun官方在JDK5.0后提出的Java持久化规范(JSR 338,这些接口 ...

最新文章

  1. Linux下分区、格式化、自动挂载
  2. 创建web服务器||HTTP协议的概念||报文||HTTP请求与响应处理——未完待续
  3. OD使用教程18 - 调试篇18
  4. windows系统登陆就注销如何解决,系统登陆就注销的解决办法
  5. WCF中的ServiceHost初始化两种方式(宿主)
  6. 设为首页 和 收藏本站js代码 兼容IE,chrome,ff
  7. Git 将本地的一个分支上的代码合并到本地的另一个分支
  8. Jquery—JQuery对radio的操作(01)
  9. 支付那些事儿III---一个BD汪眼中的产品I
  10. unity下载及安装
  11. 一步步教你写一份优秀的软件测试简历(带样例)
  12. word2013+endnotex8参考文献导入
  13. 为PDF批量添加书签
  14. linux安装使用7zip
  15. CodeBlock 常用快捷键
  16. NoteExpress 文献管理软件及使用相关问题
  17. 自动薅羊毛技术方案总结
  18. STM32开发笔记106:解决ST-LINK的Old ST-LINK firmware/ST-LINK already usde问题
  19. Magento常用插件整理收集
  20. 读《Scratch 2.0 少儿游戏趣味编程》

热门文章

  1. 智慧医疗管理系统解决方案:医药电商系统实现智能化改造
  2. Axure8有效注册码
  3. 三种方式实现echarts树图的背景图片设置
  4. Parallel Scavenge无法和CMS共同使用
  5. vue里删除购物车商品(购物车功能六)
  6. 贪婪的大脑:为何人类会无止境地寻求意义 目录
  7. 规划Autovue的安装
  8. 从mitt、tiny-emitter源码中学习手写订阅发布
  9. pancake-frontend(薄饼)二次开发
  10. Latex设置每段前的空格数