VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1822|回复: 15

EJB 中 EJBQL条件查询求救,LIST数组

[复制链接]

2

主题

8

帖子

7.00

积分

新手上路

Rank: 1

积分
7.00
发表于 2020-3-23 10:30:01 | 显示全部楼层 |阅读模式
我现在用EJB开发个WEB应用, 我做了一个用户注册表,把他映射为实体,对该实体做简单查询或按用户

名进行查询都没有问题。现在我要与其他系统结合,从其他系统中得到一个用户名的列表,用数组LIST的形式来表

示listuser。
    我想在注册表中查询所有用户名包含在listuser中的所有记录。想用EJBSQL语言来实现,但实验结果老不成功

。请大家帮我分析一下。

   @PersistenceContext
    private EntityManager em;
public   List find(List listuserid)
{
       String connselect="select OBJECT(o) from userinfo  o where o.userID IN :userid";
            

Query query=em.createQuery(connselect);

               query.setParameter("userid",listuserid);
   

          return query.getResultList();
}




我发现在hibernate中有此用法,在hibernate中有setParameterlist方法,但在EJB中不知道为什么没有,好象我

执行到em.createQuery(connselect);就出错误了。
回复

使用道具 举报

0

主题

3

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
发表于 2020-7-18 09:30:01 | 显示全部楼层
@PersistenceContext
private EntityManager em;
public List find(List listuserid){
Query query = em.createQuery("from userinfo o where o.userID IN(?1)");
query.setParameter(1, listuserid);
return query.getResultList();
}
回复

使用道具 举报

2

主题

8

帖子

7.00

积分

新手上路

Rank: 1

积分
7.00
 楼主| 发表于 2020-7-19 15:00:01 | 显示全部楼层
楼上的leodutl,按照您的方法,怎么也通不过去,一样的错误.
回复

使用道具 举报

0

主题

3

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
发表于 2020-7-19 17:00:01 | 显示全部楼层
什么错误?
回复

使用道具 举报

2

主题

8

帖子

7.00

积分

新手上路

Rank: 1

积分
7.00
 楼主| 发表于 2020-7-22 20:30:01 | 显示全部楼层
在执行query.setParameter(1, listuserid); 还是捕获到错误,说是远程调用错误
回复

使用道具 举报

2

主题

8

帖子

7.00

积分

新手上路

Rank: 1

积分
7.00
 楼主| 发表于 2020-7-27 10:15:01 | 显示全部楼层
楼上leodutl ,我刚菜又实验了一次,按照您说的方法,
@PersistenceContext
private EntityManager em;
public List find(List listuserid){
Query query = em.createQuery("from userinfo o where o.userID IN(?1)");
query.setParameter(1, listuserid);
return query.getResultList();
}
当listuserid为字符串类型的时候,没有错误,但是为LIST类型的时候就错误
回复

使用道具 举报

0

主题

8

帖子

5.00

积分

新手上路

Rank: 1

积分
5.00
发表于 2020-7-27 16:30:01 | 显示全部楼层
和楼主定义的实体BEAN的类型有没有啥关系,query.setParameter(1, listuserid);对应的bean的属性类型貌似应该也是String类型的吧,所以传的listuserid为String类型时没有出错。

PS:偶是猜测的,刚学EJB不到2星期,说的不对不要BS偶,一起学习哈。
回复

使用道具 举报

0

主题

8

帖子

5.00

积分

新手上路

Rank: 1

积分
5.00
发表于 2020-7-27 20:15:01 | 显示全部楼层
@DataModel
private List<User> userList;//一覧表示用
@In(create=true)
@Out(required=false, scope=SESSION)
private User user;
……
public void findUsers() {
  Query query;
  query = em.createQuery("from User");
  query.setParameter("code", user.getUserCode());
  query.setParameter("userName",user.getUserName());
  userList = query.getResultList();
}


参考下,呵呵,偶写的这个好用的,其中的方法体里的其他处理都删掉了,写的是主要的。^^
                       
回复

使用道具 举报

0

主题

8

帖子

5.00

积分

新手上路

Rank: 1

积分
5.00
发表于 2020-7-27 21:30:01 | 显示全部楼层
前台页面部分代码

<h:dataTable var="uls" value="#{userList}" rendered="#{userList.rowCount>0}"
        styleClass="table" headerClass="tableHeader" columnClasses="right80, right80, right80, .left60">
                <h:column>
           <f:facet name="header">
            <h:outputText value="ユーザコード"/>
           </f:facet>
           <s:link value="#{uls.userCode}" action="#{userManager.select}" escape="false"/>
        </h:column>
        <h:column>
           <f:facet name="header">
            <h:outputText value="ユーザ名"/>
           </f:facet>
           <s:link value="#{uls.userName}" action="#{userManager.select}" escape="false"/>
        </h:column>
     </h:dataTable>
回复

使用道具 举报

2

主题

8

帖子

7.00

积分

新手上路

Rank: 1

积分
7.00
 楼主| 发表于 2020-7-29 13:45:01 | 显示全部楼层
楼上的能否给出下面函数的全部,我怎么还是通不过?

public void findUsers() {
  Query query;
  query = em.createQuery("from User");
  query.setParameter("code", user.getUserCode());
  query.setParameter("userName",user.getUserName());
  userList = query.getResultList();
}


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表