当然有问题
EJB QL不支持这种查询只能这样查:
SELECT OBJECT(o) FROM Custom o WHERE o.name LIKE '?1%'另外你的单引号不对,应该是  '不是'‘%?1%’

解决方案 »

  1.   

    EJBQL更本好象不支持这种做法,我采用了一种走曲线的方法,写一个JavaBeans实现两个版本的查询函数,一个为完全匹配,一个为模糊匹配
    ///完全匹配版本
      public ArrayList getDocsByDocName(String docName)throws NotFoundDocumentException{
        ArrayList documents=new ArrayList();
        try{ 
          //调用SessionBean Remote接口的函数,其实是调用CMP的实体Bean的查询方法
          //select distinct object(o) from document as o where o.docName=?1
          documents=session.getDocsByDocName(docName);
          if(documents.isEmpty())
            throw new NotFoundDocumentException(docName+"的");
        }
        catch(Exception e){
          System.err.println(e.toString());
        }
        return documents;
      }
    //模糊匹配版本
      public ArrayList getMatchedDocsByDocName(String docName)throws NotFoundDocumentException{
        ArrayList documents=new ArrayList();
        ArrayList matchedDocs=new ArrayList();
        try{
          documents=session.getAllDocs();
          Iterator it=documents.iterator();
          while(it.hasNext()){
            DocumentDetails details=(DocumentDetails)it.next();
            //通过搜索所有的结果,看输入字符串是否为其子串,若是则加入聚集中
            if(details.getDocName().indexOf(docName)!=-1){
              matchedDocs.add(details);
            }
          }
          if(matchedDocs.isEmpty())
            throw new NotFoundDocumentException(docName+"的");
        }
        catch(Exception e){
          System.err.println(e.toString());
        }
        return matchedDocs;//返回模糊匹配结果
      }
    这样可以解决,不过十分麻烦,各位还有和简单的方法,请指教