2017-07-25 75 views
0

我有一個域對象,其中包含許多項目的列表。項目順序由hibernate(@OrderColumn)維護。此外,我再次檢查訂單欄是否設置正確。休眠列表的排序子集

因爲列表可能會很長,我試圖獲取的項目是這樣的:

Query query = session.createQuery("Select d.list From DomainObject d where d.key = :key"); 
query.setFirstResult(0); 
query.setMaxResults(10); 
query.list();  

不幸的是,返回的列表不排序。目前,我得到一個有序列表回來的唯一方法就是修改我的查詢是這樣的:

Query query = session.createQuery("Select d From DomainObject d where d.key = :key"); 
query.uniqueResult();  

好像冬眠做時,他們的域對象中只有訂購的項目。

由於後面的解決方案可能會產生相當高的內存影響,所以我想知道是否有辦法讓hibernate返回列表的有序子集。

回答

0

準則可以像下面一樣使用。 請根據您的要求更改以下代碼:

@Override 
    public List<Certification> loadAll() { 
     Criteria criteria = template.getSessionFactory().getCurrentSession().createCriteria(Certification.class); 
     criteria.setProjection(Projections.projectionList() 
       .add(Projections.property("certificationAbbr"),"certificationAbbr") 
       .add(Projections.property("certificationDesc"),"certificationDesc")) 
       .addOrder(Order.asc("certificationAbbr")) 
       .setResultTransformer(Transformers.aliasToBean(Certification.class)); 
     return criteria.list(); 
    }