JBoss下的類似like的動態匹配

以下方法解決了在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/>  
 
到此編譯,部署,大功告成
發佈了75 篇原創文章 · 獲贊 1 · 訪問量 10萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章