【发布时间】:2017-03-18 11:51:07
【问题描述】:
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 循环完成后返回整个结果。但我想要第一个真实条件的结果if 语句
regionprofile 列值
"World"
"Asia"
"India"
"Kerala"
"Kozhikode"
"673003"
所以实际上我想返回第一个相等列表项的 id,但现在它返回 2 个 id,即 india 和 pin
的 id【问题讨论】:
-
我必须同意你目前得到的答案:你的代码看起来过于复杂;并且由于我不是您使用的框架的专家...而且由于我现在没有真正的键盘...如果您仍然需要帮助,我只能提供您周一回复我。现在,我唯一能说的是:你的 if 条件中的代码太复杂了。尝试将其分解为各个部分;打印这些子结果以查看您的代码实际在做什么。好吧,也许是时候学习如何使用调试器了。
标签: java postgresql hibernate spring-boot