JBoss下的类似like的动态匹配

博客介绍了解决在JBoss下不能用like动态匹配问题的方法。先创建Finder方法,保持QL语句为空,再写一个调用该方法的方法。还需在ejb - jar.xml中找到Finder方法的xml描述,拷到jbosscmp - jdbc.xml中并修改标签,最后编译部署即可。
以下方法解决了在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/>

到此编译,部署,大功告成
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值