2017-01-18 6 views
0

im to new hibernate queries。私は休止状態の範囲の検索に関する質問があります。私が欲しいのは2つの異なる列の下 の範囲を検索することですDBの私のイラストHibernateを使用して2つの異なるプロパティからクエリ範囲を照会

です:

Start_No | End_No 
    3000 | 4000 

私の休止状態の問い合わせこの

session = getSession(); 
      session.buildLockRequest(new LockOptions(LockMode.NONE)); 
      Criteria crit = session.createCriteria(CardRange.class); 

if(!IMXUtil.isEmpty(s_startNo) && !IMXUtil.isEmpty(s_endNo)){ 
       crit.add(Restrictions.ge("startNo", Long.parseLong(s_endNo))); 

       crit.add(Restrictions.ge("startNo", Long.parseLong(s_startNo))); 

      } 

ProjectionList projList = Projections.projectionList(); 
      projList.add(Projections.property("cardRangeId")); 
      projList.add(Projections.property("startNo")); 
      projList.add(Projections.property("endNo")); 
      projList.add(Projections.property("issuerId")); 
      projList.add(Projections.property("status")); 
      projList.add(Projections.property("createdDate")); 
      projList.add(Projections.property("lastModifiedDate")); 
      crit.setProjection(projList); 
      crit.setFirstResult(iDisplayStart); 
      crit.setMaxResults(iDisplayLength); 

return crit.list(); 

のような出力は次のようになっています

もし私が3500を3600に置くならば、それはdb に3000から4000の範囲にあり、出力を表示します。どのように私はこの検索を満たすために休止状態の基準を作成することができますか?基準を作成するための

+1

start_noとend_noの間の値の範囲を検索する場合は、単純なwhere条件を使用できます。 ここで、start_no <=:param1 AND end_no> =:parma2 – CrazyMac

+0

ここでは、 'どこにstart_no>:endNoParamとstart_no>:startNoParam'のようなことをしています。 –

答えて

0

手順

1.createセッション 2.追加突起が 3.then制限を追加しています。 あなたの投影リストはきれいに見えます。

はあなたの基準に次の操作を行います(制限事項クラスのメソッドを呼び出すと、基準オブジェクトを返します)、

は各条件

基準のC1 = Restrictions.ge( "startNo"、Long.parseLong(のための基準オブジェクトを定義します。 s_startNo)); 基準c2 = Restrictions.le( "endNo"、Long.parseLong(s_endNo));

は、基準オブジェクト

基準C3 = Restrictions.and(C1、C3)に、これらの追加します。 crit.add(c3);一列に

crit.add(Restrictions.and(Restrictions.ge( "startNo"、Long.parseLong(s_startNo))、Restrictions.le( "endNo"、Long.parseLong(s_endNo) ))));

関連する問題