【问题标题】:How to order by a property of a collection of a collection (collections chain)如何按集合的集合的属性排序(集合链)
【发布时间】:2021-09-23 09:08:33
【问题描述】:

假设我有这个 Java 类层次结构:

class Product {
    @OrderBy(“?”)
    List<Subcategory> subcategories;
}

class Subcategory {
    String subcategoryName;
    List<Category> categories;
}

class Category {
    String categoryName;
}

如何使用@OrderBy 订购categoryNameCategory class 的产品? 我在想象这样的事情:

@OrderBy("categories[].categoryName ASC")

不幸的是,它不能那样工作。

【问题讨论】:

  • 因此,您想订购类别名称为 ["Animals"、"Zoology"] 的 product1 和类别名称为 ["Botany"、"Gardening"] 的 product2。哪个先?
  • 让我们假设第一个,因为它有一个在所有其他产品的所有元素之前的元素

标签: java hibernate jpa hql


【解决方案1】:

这是不可能的,而且,你为什么需要它?无论如何,您可以为此目的实现自定义Comparator,并在@PostLoad 侦听器中对列表进行排序。

【讨论】:

  • 我害怕那个。我之所以需要它,是因为出于性能原因,我想使用 SQL 而不是 Java。
  • 无论如何您都在加载整个集合,因此没有真正的性能提升。对数据库进行排序会产生影响的唯一情况是您还对数据进行了分页。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-03-29
  • 2019-05-26
  • 1970-01-01
  • 1970-01-01
  • 2021-12-11
  • 1970-01-01
  • 2019-06-12
相关资源
最近更新 更多