| 
         
     
     | 
     | 
    
  
    | 
    JBoss下的类似like的动态匹配 | 
   
  
     | 
   
  
     | 
   
  
    | 
     作者:未知  来源:月光软件站  加入时间:2005-2-28 月光软件站  | 
   
  
    以下方法解决了在JBoss下不能用like动态匹配的问题:   比如:select  OBJECT(p)  from  tba  p  where  p.name  like  ?1---->这种方法在JBoss下面是行不通的.     --------------------------------------------------------------------------   声明:这个NB的方法并非小弟所为,而是ACCP(QQ:无域之绿)原创,小弟受他所教.并不敢一人独享.有什么高见还请大家多多指教.欢迎转贴.鼓励共享!     1.先创建一个Finder方法,findByLike(String  abc,Object[]  agrs)   参数名可以随便定,但类型必须是上面的,这是规定     2.里面的QL语句保持为空,     3.另外写一个方法,比如getIdByValue(value);      public  Collection  getIdByValue(String  value)  throws  FinderException  {          StringBuffer  jbossQL  =  new  StringBuffer();          jbossQL.append("SELECT  o.id  FROM  Teacher  o  WHERE  ");          jbossQL.append("o.name  LIKE  ?1  ");          Object[]  args  =  new  Object[1];          args[0]  =  "%"  +  value  +  "%";          return  findByLike(jbossQL.toString(),args);   }     其中findByLike(jbossQL.toString(),args)就是第一步所创建的那个空的方法.   你要调用的就是这个方法了,里面的QL语句自己改改就可以用了.     在ejb-jar.xml中可以找到你刚才创建的那个空的Finder方法的xml描述,比如        <query>                                  <query-method>                                          <method-name>ejbSelectIdByQuery</method-name>                                          <method-params>                                                  <method-param>java.lang.String</method-param>                                                  <method-param>java.lang.Object[]</method-param>                                          </method-params>                                  </query-method>                                  <ejb-ql  />              </query>     把这些内容拷到jbosscmp-jdbc.xml中(对应的那个实体bean的   <ejb-name>TbaConart</ejb-name>标签后面)     把里面的<ejb-ql/>改为<dynamic-ql/>     到此编译,部署,大功告成 
 
  | 
   
  
     | 
   
  
     相关文章:相关软件:  | 
   
   
      |