@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();
}

解决方案 »

  1.   

    楼上的ejb3boy(),按照您的方法,怎么也通不过去,一样的错误.
      

  2.   

    在执行query.setParameter(1, listuserid); 还是捕获到错误,说是远程调用错误
      

  3.   

    楼上ejb3boy() ,我刚菜又实验了一次,按照您说的方法,
    @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类型的时候就错误
      

  4.   

    和楼主定义的实体BEAN的类型有没有啥关系,query.setParameter(1, listuserid);对应的bean的属性类型貌似应该也是String类型的吧,所以传的listuserid为String类型时没有出错。PS:偶是猜测的,刚学EJB不到2星期,说的不对不要BS偶,一起学习哈。
      

  5.   

    @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();
    }
    参考下,呵呵,偶写的这个好用的,其中的方法体里的其他处理都删掉了,写的是主要的。^^
      

  6.   

    前台页面部分代码<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>
      

  7.   

    楼上的能否给出下面函数的全部,我怎么还是通不过?public void findUsers() {
      Query query;
      query = em.createQuery("from User");
      query.setParameter("code", user.getUserCode());
      query.setParameter("userName",user.getUserName());
      userList = query.getResultList();
    }
      

  8.   

    public   List findExamScoreinterface(List userid){
     
     
          String connselect="select o from TCJExamScore o  where o.userID IN(:userID)";   
          Query query=em.createQuery(connselect);
          query.setParameter("userID",userid);
           return query.getResultList();
    }
    我这么写有什么错误,怎么过不去?
      

  9.   

    /**
    * DB検索
    */
    public void findUsers() {
        Query query;
        String namePattern = null;
        //入力されたユーザネーム表示
        if (!user.getUserName().equals("")) {
            namePattern = '%' + user.getUserName() + '%';
        }
        //一覧検索
        if (user.getUserCode() == "" && user.getUserName() == "") { query = em.createQuery("from User");
        }else if(user.getUserCode() != "" && user.getUserName() == "") {
    query = em.createQuery("from User where user_code = :code");
        query.setParameter("code", user.getUserCode());
        
        log.info(">>>ユーザコード検索");
    }
    else if (user.getUserCode() == "" && user.getUserName() != "") {

    query = em.createQuery("from User where user_name like :userName");
    query.setParameter("userName", namePattern);
        
        log.info(">>>ユーザ名検索");

    }
    else { query = em.createQuery("from User where user_code = :code and user_name like :userName");

    query.setParameter("code", user.getUserCode());
    query.setParameter("userName", namePattern);

        log.info(">>>ユーザコード&#12539;ユーザ名検索"); }

    userList = query.getResultList();
    log.info(">>>show userlist - #0", userList);

    if (userList.isEmpty()) {
    log.info(">>>ユーザリストが空");
    return;
    }
    for(User u: userList) {
    log.info(">>>show userList - #0 #1", u.getUserCode(), u.getUserName(), u.getPassword());
    }

    }
      

  10.   

    哈,每整理好不小心就给发出来了,前面很多都是对输入的查询条件进行的处理,所以没有啥实际意义,搂主可以自己参考下,其中的log.info这些你直接删除掉就好,我用的是JBOSS-SEAM这个构架做的,呵呵
      

  11.   

    query.setParameter("userID",userid);
    这句中,userID对应的应该是一个实体BEAN的一个属性,
    实际上对应的也应该是数据库中的一个字段,貌似我们设置
    数据库字段类型是没有list这种吧,这个编译时没有错误,
    可以实际运行时会出错。
      

  12.   

    我把我那段程序中全检索那步写死了
       ArrayList<String> userCode = new ArrayList<String>();
       userCode.add("H0001");
       userCode.add("H0002");
       query = em.createQuery("from User where user_code IN(:userCode)");
       query.setParameter("userCode", userCode);
       userList = query.getResultList();
    好用的,不知道楼主的是哪里的错误,可以在执行前把传过来的userid给和
    执行后的结果打印下看看,是否是其他地方出的错误。
      

  13.   

    ArrayList<String> userCode = new ArrayList<String>();
           userCode.add("wanglijuan");
          userCode.add("H0002");
          Query query;
          try{
       query = em.createQuery("select o from Subject o where o.subjectid IN(:subjectid)");
       query.setParameter("subjectid", userCode);
          }
          catch(Exception e){
                   throw new EJBException(e);       
          }
       return  query.getResultList()我按照你的方法,直接写死了也过不去,出现错.