2017-07-25 14 views
0

私は多くの項目を含むリストを保持するドメインオブジェクトを持っています。アイテムの順序は、休止状態(@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();  

彼らはドメインオブジェクト内にある場合にのみ発注の項目を行っています。

後の解決策は、メモリの影響が非常に大きいため、休止状態にしてリストのサブセットをオーダーする方法があるかどうかを知りたいと思います。

答えて

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(); 
    }