java - 如何在 JPA 中对集合属性进行动态排序?

标签 java jpa

我们有以下 JPA 类:

@Entity
class Supplier {
  // ... id property etc.

  @OneToMany
  @OrderBy("someProperty")
  private List<Region> regions;
}

这在正常情况下工作正常。但是,我们有一些多语言数据,其中的值存储在 nameEnnameDenameZh 等属性中。要使用的确切属性取决于登录用户。例如,说德语的用户应该看到这些区域,就像用 @OrderBy("nameDe") 注释一样。

我怎样才能做到这一点?

我知道我可以在加载后在我的代码中对集合进行排序,但这会使结果分页变得非常困难。

最佳答案

您可以在 java 中对它们进行排序。可能在 setter/getter 中:

List<Region> getRegions(){
  sorted = new List<Regions>(regions);
  Collections.sort(sorted, new RegionComparator(getUserLanguage()));
  return sorted;
}

关于java - 如何在 JPA 中对集合属性进行动态排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4390325/

相关文章:

java - 为什么这个程序会出现 ClassNotFound 异常?

java - 创建文本/纯 Jersey 响应

java - Spring JpaRepository getOne() 用于 PK 为字符串的表

java - @列名忽略JPA

java - 如何在 NetBeans 上的 Java EE 项目中调用我自己的自定义 SQL 代码

java - 我如何解析 JSON 的这种语法?

java - 创建 .JAR 文件失败

java - 如何在 MySQL 中使用 JPA 自动生成区分大小写的列

java - JPA:在一个实体上使用多个 @NamedStoredProcedureQuery

java - 程序在 Mongodb 异步查询完成之前终止