我可以使用 HQL 来获取有序查询结果的索引吗?
我知道这样做的唯一方法是从数据库中取回所有结果,然后遍历所有结果。
例如,给定:
<hibernate-mapping>
<class name="Dog" table="DOG">
<id name="id" type="int" column="DOG_id">
<meta attribute="scope-set">protected</meta>
<generator class="native"/>
</id>
<property name="age" type="int" />
<property name="name" type="string" />
</class>
</hibernate-mapping>
那么这些类型的查询:
//determine where dog with id 43 is in the current search results for dogs ordered by age
Query dogQuery = sess.createQuery("select d.id from Dog as d order by d.age");
List<Dog> dogList = dogQuery.list();
int idx = dogList.indexOf( 43 );
或者,通过狗列表进行更精细的搜索:
Query dogQuery = sess.createQuery("select d.id from Dog as d where (d.name='fluffy' OR d.age >= 3) order by d.age");
List<Dog> dogList = dogQuery.list();
int idx = dogList.indexOf( 43 );
这里的缺点是我们将每个 dog.id 加载到内存中。
我需要这个的场景:
- 将特定查询结果(数千个)显示为一行上的一个点。线和点每分钟左右更新一次。这种可视化提供了搜索查询排名的“实时”更新