JBoss下的类似like的动态匹配

王朝java/jsp·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

以下方法解决了在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/>

到此编译,部署,大功告成

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航