导航属性报错问题以及子类的createTime不能覆盖问题

来源:2-3 Jaskson序列化库的重要配置(SNAKE_CASE、时间戳)

雨中独行

2021-02-23 09:44:57

老师你好,我照视频测试了一下,总结了以下3个问题,麻烦老师看一下


问题描述1:导航属性报错问题

在Bnaaer模型上加了导航属性并打上2个注解,运行调试错误,显示如下图.

Unable to evaluate the expression Method threw 'org.hibernate.LazyInitializationException' exception.

调试过程中发现,使用@OneToMany,@OneToMany(fetch = FetchType.LAZY)两个注解都会引发错误。

最后改成@OneToMany(fetch = FetchType.EAGER),问题完美解决

我的问题是:参看视频中的不需要加FetchType.EAGER。以后是不是必须要加上FetchType.EAGER。


相关截图:

http://img.mukewang.com/climg/603454a6084eba5310590934.jpg


问题描述2:,子类的createTime不能覆盖问题

子类BannerItem继承BaseEntity,子类的  protected Date createTime无法覆盖父类的,结果没有显示createTime,必须把父类的@JsonIgnore去除才能正常显示.


问题描述3:关于数据表时间字段采用时间戳问题

create_time是数据库用的data类型,yml配置WRITE_DATES_AS_TIMESTAMPS: true,

能够序列化到时间戳(毫秒)。

数据表test_time字段用的是int(10),存储的是10位长度的时间戳.(如:1562894759(秒))

我的问题是:这两个字段我想序列化成格式如:2021-01-23 16:25:28,不知道如何处理?

如果是重写模型类的getter方法,lombok可能会有冲突,JPA可能也有问题

相关截图:

http://img.mukewang.com/climg/60345b88093d15cf03830678.jpg


写回答

1回答

7七月

2021-02-23

  1. 这个视频里都是用的lazy并没有错误,仔细检查代码或者核对源码。

  2. 建议如果部分要返回time,换个名字,不用父类的create_time

  3. 这个主要是jackson这个库的一些功能,需要研究下jackson的序列化,重新序列化接口

0

Java全栈工程师

从Java到全栈,开发带SKU的真实企业级电商项目(附赠整套UI框架,配套升级Vue3.0内容)

2068 学习 · 3052 问题

查看课程