我正在开发一个功能,可以检索特定实体的一个或多个实例。所涉实体
多个一对多关系
与其他实体合作。我需要用这些关系填充基本实体。
我首先加载基本实体,然后运行多个后续查询,每个查询加载一组一对多关系。
select [...] from hierarchynode_track this_ inner join hierarchynode hnd1_ on this_.hierarchynode_id=hnd1_.id inner join track trk2_ on this_.track_id=trk2_.id left outer join agreement_track agr3_ on trk2_.id=agr3_.track_id left outer join agreement agt4_ on agr3_.agreement_id=agt4_.id left outer join originalpublisher opu5_ on agt4_.originalpublisher_id=opu5_.id left outer join society soc6_ on opu5_.society_id=soc6_.id where hnd1_.id in (?) limit ?
select [...] from hierarchynode_track this_ inner join hierarchynode hnd1_ on this_.hierarchynode_id=hnd1_.id inner join track trk2_ on this_.track_id=trk2_.id left outer join genrenode_track grs3_ on trk2_.id=grs3_.track_id left outer join genrenode gnr4_ on grs3_.genrenode_id=gnr4_.id where hnd1_.id in (?) limit ?
select [...] from hierarchynode_track this_ inner join hierarchynode hnd1_ on this_.hierarchynode_id=hnd1_.id inner join track trk2_ on this_.track_id=trk2_.id left outer join hierarchynode_track thr1x3_ on trk2_.id=thr1x3_.track_id left outer join hierarchynode hnd1x4_ on thr1x3_.hierarchynode_id=hnd1x4_.id where hnd1_.id in (?) limit ?
基本查询总是相同的,但每个查询最终都会与特定的表进行连接。查询条件将始终相同。
只要我在同一事务中运行查询,这三个查询是否总是返回相同的基本实体集?没有对查询执行特定的排序,查询是在事务隔离级别下运行的
READ COMMITED
.
笔记
:另一种方法是先运行“基本查询”,然后从该结果中检索实体id。从那里,我可以使用
IN
在基本实体上进行筛选。然而,我怀疑
在里面
当基本实体id的数量在
在里面
条件增长(例如1000-2000个基本实体)。