我们如何使用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())));

08-18 10:14