2017-07-25 52 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(); 
    }