我正在使用 Criteria API 进行介绍,但在进行查询时遇到问题,我正在尝试这样做 2 天,所以我需要您的帮助。我必须从数据库中获取美国邮政编码,但由于美国在许多州和县都有同名城市,我已经通过state, county and city to the Facade
(字符串格式为“州-县-市”),现在我必须进行查询通过使用标准 API。所以,逻辑是把邮政编码放在state = "state_name", county = "county_name" and city = "city_name
“但我的努力没有给出任何结果。我调试了代码,它打破了"cq.where(...)"
。通过教程,我认为这会起作用:(例如我传递了参数“ " 格式如下:HI - HAWAII - HONUMU 所以我需要 HONUMU 的邮政编码)
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery cq = cb.createQuery();
for (String c : cities) {
String[] b = c.split("-");
String state= b[0].trim();
String county= b[1].trim();
String city = b[2].trim();
Root<ZipCodes> zip = cq.from(ZipCodes.class);
cq.select(zip);
cq.where(cb.and(cb.equal(zip.<String>get("state"), state),
cb.equal(zip.<String>get("county"), county)),
cb.equal(zip.<String>get("city"), city));
return em.createQuery(cq).getResultList();