我有一个 hashMap 参数,它<Sting,Value>
现在包含我想将这些值传递到两个 JPA 列中。
SELECT obj from x obj where x.no=?<String goes here> and x.amount=?<value goes here >
我怎样才能使用 JPQL 做到这一点?
据此,您可以使用 KEY() 和 VALUE(),在您的情况下,它会给出如下内容:
Query query = em.createQuery("SELECT obj from x obj where x.no=KEY(:mapParam) and x.amount=VALUE(:mapParam)");
query.setParamters("mapParam", yourMap);
query.getResultList();
不过要小心,您需要使用 JPA 2.0,并且 Hibernate 存在一些问题,从那时起就已修复,但您仍然必须使用固定版本(4.1.4+)。看到这个。
使用此循环,您可以遍历所有键值对Map
来执行:select statements
Query query = em.createQuery("SELECT obj from x obj where x.no=:x_no and x.amount=:x_amt");
List<ResultObj> resultList = new ArrayList<ResultObj>();
Iterator<Entry<String, Value>> iter = yourMap.entrySet().iterator();
while (iter.hasNext()) {
Entry<String, Value> next = iter.next();
Value value = next.getValue();
query.setParameter("x_no", next).setParameter("x_amt", value);
ResultObj result = (ResultObj) query.getSingleResult();
resultList.add(result);
}