2010-12-08 68 views
8

我們有以下JPA類:如何動態地對JPA中的集合屬性進行排序?

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

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

這工作在正常情況下的罰款。但是,我們有一些多語言數據,其中值存儲在屬性中,如nameEn,nameDe,nameZh。要使用的確切屬性取決於登錄的用戶。例如,講德語的用戶應該看到區域,就好像它已用@OrderBy("nameDe")進行了註釋。

我該如何做到這一點?

我知道我可以在我的代碼中加載後對其中的集合進行排序,但是這使得分頁結果相當困難。

+2

因爲你的持久化單元創建EntityManagerFactory的時候註釋處理一次你不能嵌入在註釋。你試圖做的是類似於建立一個動態查詢。 – 2010-12-08 17:39:35

回答

4

你可以用java對它們進行排序。可能在吸氣:

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

如果您的藏品中有1000件物品,並且您只想獲得按物業排序的前10個物品,該怎麼辦?在dbms中這樣做會更有效 – 2013-11-28 07:11:12

相關問題