3

例如,A 和 B 之间存在多对多关联。并且

 A.bs是按中间表中的索引列排序的 List<B> 排序的:idx
所以我们没有将 idx 列映射为 Class 字段。

现在我们要单独查询B的列表,主要条件是A的id。但是当直接查询 B 时,它会出现一个未排序的列表(不要按 idx 字段排序)。

我知道我们可以首先检索 A,然后将 B 收集到一个列表中。但是,考虑到框架,我们可以这样做,它必须返回一个List而不需要手动编码(不想过多描述框架。总之,这个限制是我们自己封装的分页工具造成的,我不想修改它。)。

有什么方法可以通过 HQL/Criteria 解决这个问题。标准是优选的。

4

1 回答 1

1

好的。这个问题已经解决了。在 hql 中使用 index() 函数会得到正确的结果。如:

select b from A a left join a.bs b where a.id = ? 按索引排序(b)

index() 的限制是子级必须由父级在 hql 中导航,否则会抛出异常。意味着像“select b from B b order by index(b)”这样的hql是非法的。此外,不要在此关联导航中使用“获取”(这不是本问题所关心的问题)。

希望对对此感到困惑的人有用。

于 2012-10-31T11:16:43.083 回答