我们如何使用Hibernate按照提供给Hibernate查询的Pks列表的顺序加载多个实体?
在下面的代码中,列表输出的顺序是升序,而不是参数中提供Pks的顺序。
Criteria criteria = s.createCriteria(entityClass).add(Restrictions.in(idPropertyName, pks));
List list = criteria.list();
最佳答案
您得到它们,然后使用比较器对它们进行排序,该比较器比较列表中每个实体的索引。
例如:
Map<Long, Integer> indexById = new HashMap<>();
for (int i = 0; i < pks.size(); i++) {
indexById.put(pks.get(i), i);
}
List<MyEntity> entities = seachByIds(pks);
entities.sort(Comparator.comparing(entity -> indexById.get(entity.getId())));