0

我有一个 hashMap 参数,它<Sting,Value>现在包含我想将这些值传递到两个 JPA 列中。

SELECT obj from x obj where x.no=?<String goes here> and x.amount=?<value goes here >

我怎样才能使用 JPQL 做到这一点?

4

2 回答 2

2

据此您可以使用 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+)。看到这个

于 2015-08-26T13:19:00.190 回答
0

使用此循环,您可以遍历所有键值对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);
}
于 2013-10-25T10:51:38.877 回答