概括:
明明刚插入一条新记录,结果用这条新记录的id查询的时候却查不到,但是直接去数据库中却能看到这条记录,很神奇是不是
解决办法:
修改实体类中引用属性上面的注解,令optional=true
详细解释:
看控制台的sql记录,由于我的项目进行了权限控制,所以一个findById的操作会产生多条sql查询记录,但这不重要,
一般只需要看关键的那个条sql语句就可以
看这条sql的最后,会有很多表关联查询的部分,因为我这个数据表有很多关联关系
直到看到了inner join,又看到了inner join的这个表在当前查询的表的字段的记录是null(比如student表中关联了teacher表,字段为teacher_id),就知道了问题所在
inner join这种关联查询,是关联的两方都有值,才能查出值,这就是查不出数据的原因了
而JPA中的ManyToOne注解的optional=false时,表示使用inner join进行关联查询
optional=true时,表示使用left join(是left outer join的简写)进行关联查询
关于join的链接我刚看了这个链接:
https://www.cnblogs.com/williamjie/p/9498032.html