如何在JPA中动态排序集合属性?

Dav*_*kes 8 java jpa

我们有以下JPA类:

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

  @OneToMany
  @OrderBy("someProperty")
  private List<Region> regions;
}
Run Code Online (Sandbox Code Playgroud)

这在正常情况下工作正常.但是,我们有其中的值存储在类似性质的一些多语种数据nameEn,nameDe,nameZh.要使用的确切属性取决于登录用户.例如,德语用户应该看到区域好像已经注释了@OrderBy("nameDe").

我怎样才能做到这一点?

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

Fel*_*old 3

你可以用java对它们进行排序。可能在吸气剂中:

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