导航属性报错问题以及子类的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。
相关截图:
问题描述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可能也有问题
相关截图:
1回答
这个视频里都是用的lazy并没有错误,仔细检查代码或者核对源码。
建议如果部分要返回time,换个名字,不用父类的create_time
这个主要是jackson这个库的一些功能,需要研究下jackson的序列化,重新序列化接口
相似问题