2010-12-12 3 views
2

を休止:は私が休止状態にHQLクエリを実行するには、次のコードを使用していますトップN行HQLクエリー

String myHqlQuery = "select from MyTable where Something = ? order by SomeVal"; 
// Set bind values ... 
getHibernateTemplate().find(myHqlQuery, bindParams); 

、私はテーブルから上位N行を選択します。私はmySqlがHQLでは利用できないLIMITキーワードを持っていることを知っています。私はまた、HibernateがQueryオブジェクトで実行できるsetMaxResults()メソッドを持っていることも知っています。

私のコードはあまりにも(つまり、HibernateTemplateオブジェクトを介してクエリを実行する)変更しなくても "制限"制約を追加する方法はありますか?

+1

[HQLでの制限クエリの実行方法](http://stackoverflow.com/questions/1239723/how-do-you-do-a-limit-query-in-hql) – hvgotcodes

+0

right..thanks..thisこの問題は、私が推測する限り閉鎖することができます。もちろん、実際にはHQLでこれを直接行うことはできません。 – kli

答えて

2

以下のコードだから私はあなたが行うことができるはずだと思う私

HibernateTemplate ht = getHibernateTemplate(); 
    ht.setMaxResults(10); 
    List<Object> obj= ht.findByNamedQueryAndNamedParam("namedQuery", 
      new String[] { "parameter1" }, 
      new Object[] { parameter1 }); 

のために働く:

String myHqlQuery = "select from MyTable where Something = ? order by SomeVal"; 

// Set bind values ... 

HibernateTemplate ht = getHibernateTemplate(); 

ht.setMaxResults(10); 

ht.find(myHqlQuery, bindParams); 
0

使用

org.springframework.data.domain.Pageable

int numberOfItems = 10; 

Pageable pageableTop = new PageRequest(0, numberOfItems); 
yourRepository.findYourEntity(pageableTop); 
関連する問題