jodatime依靠其方便的api和与Data无缝转换,成为java开发负责时间逻辑的不二之选。
当jodatime作为Entity的属性自动转换时,一般用到jadira.usertype
在实体类中使用jodatime需要引入jadira.usertype
自动转换有两种配置,一种是在属性上加注解:
// Will be mapped as DATETIME (on MySQL)
@Type(type = "org.jadira.usertype.dateandtime.joda.PersistentDateTime")
private DateTime createTime;
// Will be mapped as DATE (on MySQL), i.e. only date without timestamp
@Type(type = "org.jadira.usertype.dateandtime.joda.PersistentLocalDate")
private LocalDate birthdayDate;
一种是做全局配置
spring boot的app.properties配置如下:
spring.jpa.properties.jadira.usertype.autoRegisterUserTypes = true
这样在实体类中就可以直接使用jodatime的DateTime类型,在存取数据库的时候会自动完成类型转换
// Will be mapped as DATETIME (on MySQL)
private DateTime createTime;
// Will be mapped as DATE (on MySQL), i.e. only date without timestamp
private LocalDate birthdayDate;
不过有一个问题,当数据库保存实体时,时间少了8个小时,2016-06-20 00:00:00存到数据库中变成了2016-06-19 16:00:00,看来是丢了时区信息。