java - 如何按标识符或主键的顺序加载多个 Hibernate 实体

标签 java hibernate sql-order-by entity identifier

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

关于java - 如何按标识符或主键的顺序加载多个 Hibernate 实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36516249/

相关文章:

mysql - 当存在特殊字符时,使用 REPLACE() 按字母数字顺序对 mySQL SELECT 进行 ORDER BY

java - 如果空间已满,则线性对齐 View 中的项目以转到下一行

java - HQL 连接多个表,应该返回什么?

hibernate - 如何避免在实体的 hibernate 条件中初始化 Eager 列

使用 Hibernate 的商业 Web 应用程序中的 MySQL 许可

linq - 按 "string"名称订购 LINQ

mysql - 按特定顺序对结果进行分组

java - ApacheDS - 如何使用 Java JNDI 创建新用户并设置密码?

java - 如何在libgdx java中使用渐变颜色绘制曲线

java - 使用 StringTokenizer 输入 5 个整数