小编per*_*hap的帖子

将参数设置为IN表达式的列表

每当我尝试将列表设置为在IN表达式中使用的参数时,我都会得到一个Illegal参数异常.互联网上的各种帖子似乎表明这是可能的,但它肯定不适合我.我正在使用Glassfish V2.1和Toplink.

有没有其他人能够让这个工作,如果是这样的话怎么样?

这是一些示例代码:

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();
Run Code Online (Sandbox Code Playgroud)

以及堆栈跟踪的相关部分:

java.lang.IllegalArgumentException: You have attempted to set a value of type class java.util.Arrays$ArrayList for parameter accountIds with expected type of class java.lang.Long from query string SELECT a.accountManager.loginName FROM Account a WHERE a.id IN (:accountIds).
at oracle.toplink.essentials.internal.ejb.cmp3.base.EJBQueryImpl.setParameterInternal(EJBQueryImpl.java:663)
at oracle.toplink.essentials.internal.ejb.cmp3.EJBQueryImpl.setParameter(EJBQueryImpl.java:202)
at com.corenap.newtDAO.ContactDaoBean.getNotificationAddresses(ContactDaoBean.java:437)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.sun.enterprise.security.application.EJBSecurityManager.runMethod(EJBSecurityManager.java:1011)
at com.sun.enterprise.security.SecurityUtil.invoke(SecurityUtil.java:175)
at com.sun.ejb.containers.BaseContainer.invokeTargetBeanMethod(BaseContainer.java:2920) …

java jpa glassfish jpql toplink-essentials

23
推荐指数
3
解决办法
6万
查看次数

一个很好的网络数学Java库

我正在寻找一个面向网络数学并已经过测试的Java库.没有什么特别的花哨,只需要保存ips和子网,并执行打印子网掩码或计算IP是否在给定子网内的操作.

我应该自己动手,还是已经有一个强大的库?

java math networking

13
推荐指数
2
解决办法
5927
查看次数

标签 统计

java ×2

glassfish ×1

jpa ×1

jpql ×1

math ×1

networking ×1

toplink-essentials ×1