【发布时间】:2012-01-27 04:25:28
【问题描述】:
我正在尝试编写一个通用方法,该方法可以获取命名查询,在其中设置命名参数并返回结果。
方法如下所示,
s = getSession();
q = s.getNamedQuery(nameOfTheQuery);
keySet = queryParams.keySet();
itr = keySet.iterator();
while(itr.hasNext()){
key = itr.next();
//Problem here
q.setParameter(key, queryParams.get(key));
}
q.setMaxResults(maxResults);
q.setFetchSize(fetchSize);
log.info("::>>>> Query result :"+(q.uniqueResult()));
我正在尝试将命名参数设置为此处的值。但是当这里的参数恰好是一个列表或集合时,我得到一个 ClassCastException 而 q.uniqueResult()
有没有办法我可以编写这个方法来支持集合和其他类型的参数?我必须设置 maxResults 和 fetchSize,所以我必须选择这个选项。任何帮助将不胜感激。谢谢!
【问题讨论】:
-
如果您想正确回答这个问题,我相信您需要输入整个方法的完整代码(包括方法签名)。很难跟上。另外,既然您对 Naved 说“我想知道如何确定参数的类型或某种机制来找到它并相应地更改方法”,您应该将该信息放在您的问题中的某个位置。