使用休眠

时间:2017-07-25 18:50:10

标签: hibernate

我有一个域对象,其中包含一个包含许多项的列表。项目顺序由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只在它们位于域对象中时才进行项目排序。

由于后面的解决方案可能会产生很大的内存影响,我想知道是否有办法让hibernate返回列表的有序子集。

1 个答案:

答案 0 :(得分: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();
    }