例如,A和B之间存在多对多关联。
A.bs is sorted List<B> that sorted by an index-column in the middle-table: idx因此我们没有将idx列映射为Class字段。
现在我们要单独查询B列表,主要条件是A的id。但是当直接查询B时,它会出现一个未排序的List(不按idx字段排序)。
我知道我们可以先检索A然后将B收集到List中。但是,考虑到框架,我们可以这样做,它必须返回一个没有手动编码的List(不想过多地描述框架。总之,这个限制是由我们自己封装的分页工具引起的,我不想修改它。)。
是否有任何方法可以通过HQL / Criteria解决此问题。标准是可取的。
答案 0 :(得分:1)
好。这个问题已经解决了。在hql中使用index()函数将获得正确的结果。例如:
select b from A a left join a.bs b where a.id = ? order by index(b)
index()的限制是必须在hql中通过parent导航子节点,否则会抛出异常。意味着像“通过索引(b)从B b顺序选择b”的hql是非法的。 另外,不要在此关联导航中使用“fetch”(这个问题并不关心这个问题)。
希望对那些对此感到困惑的人有用。