通过if语句循环中断

时间:2017-03-18 11:51:08

标签: java postgresql hibernate spring-boot

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循环完成后返回整个结果。但是我希望得到第一个真实条件的结果如果声明

regionprofile列值

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

所以实际上我想要返回第一个相等列表项的id,但现在它返回2个id,即 india 的id和 pin

1 个答案:

答案 0 :(得分:0)

您的代码中存在多个错误。 首先,当您覆盖方法开头的所有值时,为什么在方法中有参数。没有任何意义。

然后你的while循环非常奇怪。在此循环中,您为if条件"check"命名,在if内,您可以在不执行任何操作的情况下中断"check"。您不会增加i,因此下一次while循环时,您的i仍然相同。你想打破while循环吗?那么你只需要break;