【发布时间】:2015-11-07 09:26:38
【问题描述】:
我有一个这样声明的 JPQL 命名查询:
@NamedQuery(name = "Client.findByInternalIds", query =
"select o from Client o where o.internalId in (:internalIds)")
这里,:internalIds 应该是我在运行时作为参数传递给命名查询的列表。每当我尝试这样做时都会出现问题:
@Override
public List<Client> getClientsByInternalIds(List<Integer> internalIds) {
TypedQuery<Client> nq = em.createNamedQuery("Client.findByInternalIds", Client.class);
nq.setParameter("internalIds", internalIds);
return nq.getResultList();
}
我基本上得到了这个错误(异常)
java.lang.IllegalArgumentException:您试图设置类 java.util.ArrayList 类型的值 对于具有预期类类型的参数 internalIds java.lang.Integer from query string select o from Client o where o.internalId in (:internalIds)
我在互联网上搜索了一个解决方案,似乎都说我的语法是正确的,所以任何人都可以帮我解决这个问题吗?谢谢。
仅供参考,使用 WebLogic 12c 和 EclipseLink。
【问题讨论】:
标签: java jpa eclipselink jpql weblogic12c