我有一个hashMap参数,其中包含<Sting,Value>
现在我想将这些值传递到两个JPA列中。
SELECT obj from x obj where x.no=?<String goes here> and x.amount=?<value goes here >
我怎么能用JPQL做到这一点?
答案 0 :(得分:1)
根据to this,你可以使用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+)。请参阅this。
答案 1 :(得分: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);
}