今天在做一个Query查询时,数据库中只有一条,却在封装的查询语句中查询出多条出来,百思不得解,开始以为是Query封装出了问题,后来测试后发现没问题,然后想到在控制台查看是否输出了多条查询语句,还真是。
然后想到了对象关联问题:
@Fetch(FetchMode.JOIN) 会使用left join查询 只产生一条sql语句
@Fetch(FetchMode.SELECT) 会产生N+1条sql语句
@Fetch(FetchMode.SUBSELECT) 产生两条sql语句 第二条语句使用id in (…)查询出所有关联的数据
刚开始我写的是@Fetch(FetchMode.SELECT) ,所以出现了查出的数据重复,后面改成@Fetch(FetchMode.SUBSELECT)就对了,还是要注意细节。
JPA查询数据库时,数据库中只有一条,查询出多条的原因
最新推荐文章于 2024-06-30 15:03:08 发布