2017-03-18 62 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上面的代碼,但它的同時,完成後返回整個結果loop.But我想從if語句斷裂,同時通過循環if語句

regionprofile列第一個真正的條件的結果值

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

所以其實我想返回第一個平等的列表項的ID,但現在它返回的印度 2點的ID,即ID的和pin

+0

我不得不同意你到目前爲止的答案:你的代碼看起來過於複雜;因爲我不是你使用的框架的專家......而且因爲我現在沒有真正的鍵盤......如果你仍然需要幫助,我只能提供你在星期一回到我身邊。現在,我唯一可以說的是:if條件中的代碼太複雜了。嘗試將其分解成其部分;打印這些子結果,看看你的代碼真的在做什麼。好吧,也許現在是您學習如何使用調試器的時候了。 – GhostCat

回答

0

你的代碼有幾個錯誤。 首先,當您覆蓋方法開始處的所有值時,爲什麼您的方法中有參數。沒有任何意義。

然後你的while循環很奇怪。在此循環中,您將if條件命名爲"check",並在if之內,您不用做任何事情就打破"check"。你不會增加i,所以while循環的下一次,你的i仍然是一樣的。你想打破while循環嗎?那麼你只需要你break;

+0

實際上,我想檢查列表項以相等的屬性,並返回第一個匹配值的id和列表的順序具有重要意義,即,引腳值具有匹配,然後返回引腳值id並將循環分解爲投影。 – user7682587