我有2张桌子A和B. 我写的aql像a.key =?和a.id = b.id
它会产生超出需要的额外查询。
第一个查询是从获取匹配的元素得到a.key(它有179个元素)。 然后它执行相同的查询4次。第一次迭代在'in'子句中接受100个参数,然后是50,然后是25,然后是4。
我不明白为什么它不能执行查询购买在单个查询中给出179个元素
答案 0 :(得分:3)
关于你从A到B的关系,你很可能有:
batch-size="100"
可能:
fetch="select"
您可以将其更改为:
fetch="join"
或将批量大小增加到200,看看会发生什么。
请注意,查询的a.id=b.id
部分会响铃,表明您的OO设计和ORM映射不正确。你需要使用关系,让hibernate为你完成工作(在这种情况下是连接)。如果是这种情况,则在正确映射实体之前,上述建议不适用。