|
|
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/> 到此编译,部署,大功告成
|
|
相关文章:相关软件: |
|