前言在这次测试中,我遇到了一个懒查询错误。我上个月也遇到了惰性查询错误。当时参考了网上的评论,禁用了实体间的惰性查询。一周汇报的时候,老师建议我使用@Transactional事务注解,当时也成功解决了。这次遇到了比较复杂的@Transactional事务注解,没能解决。求解过程主要有以下几种方法。有一个队列来存储元素。方法1是后台接口,负责从前台入队元素。方法二执行定时任务,每隔一段时间检查队列是否为空。如果不是为空,则执行相应的方法。对应方法执行时报错,说是队列头元素的关联实体的关联实体报惰性查询错误。我尝试在方法二中添加@Transactional事务注解,并没有解决问题,还是报同样的错误。我也尝试在方法一中添加事务注解,但并没有解决问题。于是通过上次错误关闭了对应实体上的惰性查询,问题解决。但是简单地关闭惰性查询会增加数据库的压力。考虑更好的解决方案。然后奇怪的事情发生了。当我在方法一上断点看已经入队的元素是否有问题时,显示district.children有对应的对象,传入的值是没有问题的,通过下面的显示还是没有问题(这是运行时报错的地方)。第二次没有检查断点1元素,直接跳过,检查断点2,发现报惰性查询错误。解决方法是想到使用关联的实体类时,重新从数据库中查询。//防止惰性查询异常顺利解决。仔细一想,我并没有把元素存入数据库,而是暂时存入队列,本质上是存入服务器内存,但是也会出现数据库相关的错误。难道Java底层也是序列化类存储的?贮存?
