2017-03-18 9 views
0
public String pinLoacation(String city, String add2, String add3, String district, String state, String country, 
      String pin) { 
     Session session = getSession(); 

     city = "kallahi"; 
     add2 = "asi5a"; 
     add3 = "parvathiffgpuragm road"; 
     district = "kozfhikode"; 
     state = "kerafla"; 
     country = "india"; 
     pin = "673003"; 

     List<String> ar = new ArrayList<String>(); 

     ar.add(pin); 
     ar.add(country); 
     ar.add(state); 
     ar.add(district); 
     ar.add(city); 
     ar.add(add3); 
     ar.add(add2); 

     Criteria criteria = session.createCriteria(RegionProfile.class); 

     Disjunction disjunction = Restrictions.disjunction(); 

     int i = 0; 
     while (i < ar.size()) { 

      check: if (disjunction.add(Restrictions.eq("regionProfileName", ar.get(i)).ignoreCase()).equals(ar.get(i))) 

       break check; 
      else i++; 


     } 

     criteria.add(disjunction); 

     ProjectionList proj = Projections.projectionList(); 
     proj.add(Projections.groupProperty("regionProfileId").as("regionProfileId")); 
     criteria.setProjection(proj); 
     criteria.setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP); 
     List<RegionProfile> res = criteria.list(); 

     return BasicGson.toGson(res); 

    } 
} 

私は上記のコードを持っていますが、リストから特定のリストアイテムのIDを返すために使用したいのですが、whileループの完了後に結果全体を返します。私が最初に等しいリスト項目のIDを返すようにしたいので、実際にループ中のifステートメントを中断します

"World" 
"Asia" 
"India" 
"Kerala" 
"Kozhikode" 
"673003" 

値が、今のはインドの2つのidの、すなわちidを返す

if文regionprofile列から最初の真条件の結果が欲しいですおよびピン

+0

これまでの回答に同意する必要があります:あなたのコードは複雑すぎます。あなたが使用しているフレームワークの専門家ではないので...そして、私は現実のキーボードを持っていないので、まだ助けが必要な場合は、月曜日に私に戻ってくるように提案することができます。今、私が言うことができる唯一のもの:if条件のコードはあまりにも複雑です。それをその部分に分解してください。あなたのコードが実際に何をしているのかを確認するために、これらのサブレポートを出力します。そして、おそらく、デバッガの使い方を学ぶべき時です。 – GhostCat

答えて

0

コードにいくつかの誤りがあります。 まず、メソッドの先頭にあるすべての値を上書きするときに、メソッドにパラメータがあるのはなぜですか。意味がない。

あなたのwhileループは非常に奇妙です。このループでは、ifの名前を"check"とし、ifの中には何もせずに"check"を中断します。 iを増やさないので、次回のwhileループでは、iはまだ同じです。 whileループを解除したいですか?次に、あなただけにしてくださいbreak;

+0

実際には、リスト項目を等しいプロパティにチェックして最初の一致する値のIDを返し、リストの順序が重要です。すなわち、ピン値が一致していれば、ピン値が返され、ループが投影に壊れます。 – user7682587

関連する問題