我正在使用openJPA作为实现,我面临以下问题。
在我们的一个服务中,我们使用namedQuery来选择范围内的值,如下所示:
query = "select xxx from xxx where xxx in (:param)"
此服务/查询由另一个负责建立/提供此参数值的进程调用。有时 - 由于不好的原因 - 这个过程给我们一个长度大于DB2授权的最大长度的列表。
所以我想知道我们是否可以实现一个机制来自动将这个参数拆分成几个vlaues列表,为每个内部列表执行这个namedQuery,然后在返回之前聚合结果。
现在的主要问题是:我可以多次重复使用我构建的TypedQuery来重新执行相同的请求,但使用不同的参数值吗?
代码示例(例如,不是真实代码或现有代码):
TypedQuery<MyClass> query = em.createNamedQuery("myQueryName", MyClass.class);
foreach (...) {
query.setParameter(...);
res = query.getResultList();
// Query re-executed and results are different ?
}
这是解决此类问题的正确方法,如果没有更好的(在演出方面)这样做的方法吗?
答案 0 :(得分:0)
不,你不能这样做。您必须为每次执行重新创建TypedQuery
。