每当我尝试将列表设置为IN表达式中使用的参数时,都会收到非法参数异常。互联网上的各种帖子似乎都表明这是可能的,但对我来说肯定不起作用。我正在使用带有Toplink的Glassfish
V2.1。
有没有其他人能够使它正常工作,如果可以的话?
这是一些示例代码:
List<String> logins = em.createQuery("SELECT a.accountManager.loginName " +
"FROM Account a " +
"WHERE a.id IN (:ids)")
.setParameter("ids",Arrays.asList(new Long(1000100), new Long(1000110)))
.getResultList();
以及堆栈跟踪的相关部分:
java.lang.IllegalArgumentException:您试图为参数accountIds设置类类java.util.Arrays $ ArrayList的值,其类型为查询字符串SELECT a.accountManager.loginName FROM帐户的期望类型java.lang.Long .id IN(:accountIds)。
在oracle.toplink.essentials.internal.ejb.cmp3.base.EJBQueryImpl.setParameterInternal(EJBQueryImpl.java:663)上
在oracle.toplink.essentials.internal.ejb.cmp3.EJBQueryImpl.setParameter(EJBQueryImpl.java:202)
在com.corenap.newtDAO.ContactDaoBean.getNotificationAddresses(ContactDaoBean.java:437)
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
在java.lang.reflect.Method.invoke(Method.java:597)
在com.sun.enterprise.security.application.EJBSecurityManager.runMethod(EJBSecurityManager.java:1011)
在com.sun.enterprise.security.SecurityUtil.invoke(SecurityUtil.java:175)
在com.sun.ejb.containers.BaseContainer.invokeTargetBeanMethod(BaseContainer.java:2920)
在com.sun.ejb.containers.BaseContainer.intercept(BaseContainer.java:4011)
在com.sun.ejb.containers.EJBObjectInvocationHandler.invoke(EJBObjectInvocationHandler.java:203)
...更多67
您的JPQL无效,请删除括号
List<String> logins = em.createQuery("SELECT a.accountManager.loginName " +
"FROM Account a " +
"WHERE a.id IN :ids")
.setParameter("ids",Arrays.asList(new Long(1000100), new Long(1000110)))
.getResultList();
如何在常量参数中传递类型值?在这种情况下,此参数仅适用于PARS()常量。 更新:我最终没有在帖子中提到它,但它是一个对象列表,而不是一个字符串。
问题内容: 例如,我有此查询 我想将ID设置为列表(1,2,3,4,5,6,17,19)。 此代码不起作用 结果,我想有这样的SQL查询 问题答案: 使用。您还必须在列表参数周围加上括号。
问题内容: 我有一个由三个变量@ val1,@ val2和@Operator创建的数学表达式。因此,我是否需要按字符串执行查询,并且需要在查询字符串中设置变量的值,如何设置? 我在下面试过 注意: 我正在函数内部使用它。 问题答案: 对过程使用参数化查询: 还纠正了一些错误: 默认大小将为,并使用not初始化。有关详细信息,请参见为什么从int进行转换/转换返回星号。 您无需强制转换为内部动态查询
我正在尝试执行以下操作(cb=CriteriaBuilder): 但我得到以下语法错误: 绑定不匹配:(表达式之间的泛型方法 是否可以转换表达式
我有一个lambda表达式,我希望能够传递和重用。代码如下: 这里的关键是,我希望能够将我在这里使用的lambda表达式传递到调用此代码的方法中,以便可以重用它。lambda表达式是我的。查询方法。我假设我想使用Action或Func,但我不太确定它的语法是什么,或者它是如何工作的。谁能给我举个例子吗?
问题内容: 我想在单行中呈现此列表。 清单项目1 清单项目2 应该显示为 列出项目2 列出项目2 使用什么CSS样式? 问题答案: ul li{ display: inline; } 有关更多信息,请参见listamatic 的基本列表选项和基本水平列表提供的链接)。 另外,正如评论中指出的那样,您可能希望对ul进行样式设置,并在li和li自身内部添加任何元素,以使外观看起来更好。