... where obj.book_name LIKE ?1?1='%aBookName%'
这样好象理论上行,但是我用JB6+JBOSS3就是同不过

解决方案 »

  1.   

    select * from xxx where col1 like %aBookName%
      

  2.   

    SELECT OBJECT(c) FROM xxx c WHERE c.book_name = ?1
      

  3.   

    SELECT OBJECT(c) FROM xxx c WHERE c.book_name LIKE ?1
      

  4.   

    各位在JB7和JBOSS3上测试过吗?
      

  5.   

    我在JB7和 Jboss上测试过,不过我用的是容器管理的EJB,只要在EJB容器的jaws.xml里部署一下就可以了,在
          <cmp-field>
                    <field-name>book_name</field-name>
                    <column-name>BOOK_NAME</column-name>
                </cmp-field>
    下面添加这么几行就可以了
          <finder>
                    <name>findByBOOK_NAME</name>
                    <query>BOOK_NAME like {0}</query>
                    <order />
                    <read-ahead>true</read-ahead>
                </finder>
    然后在程序调用的时候只要这么调用就可以了
       findByBOOK_NAME("%"+book_name+"%")
    那book_name这个参数就可以是任何的字符串了
      

  6.   

    哦,上面有一个地方错了,就是函数名findByBOOK_NAME要改为findByBook_name
      

  7.   

    tarcychen()的方法可行,我在weblogic6+sp2上测试过
      

  8.   

    请问jaws.xml是哪个版本的文件?
    我在EJB2里找不到
      

  9.   

    kofwr(搭补流二)  的
    select * from xxx where col1 like %aBookName%
    不是可以用了吗?  
     
      

  10.   

    lkenshin(我来帮你up) ,大哥,楼主的意思是要传参数的
      

  11.   

    谢谢charleyshen(shenpf) ,
    可是那里面的片段是类似这样的,里面的LIKE ?1在JBOSS中就是通不过晕了,我记得元旦前好象还可以用的,……
                <query>
                    <query-method>
                        <method-name>findAuthorityByName</method-name>
                        <method-params>
                            <method-param>java.lang.String</method-param>
                        </method-params>
                    </query-method>
                    <ejb-ql>Select Object(obj) from WorkGroupAuthority obj where obj.name LIKE ?1</ejb-ql>
                </query>
      

  12.   

    <ejb-ql>
    <![CDATA[Select Object(obj) from WorkGroupAuthority obj where obj.name LIKE ?1]]>
    </ejb-ql>是不是要写成这样?
      

  13.   

    select * from Object(o) where o.col1 like '%aBookName%'
      

  14.   

    select * from xxx where col1 like %aBookName%
    这种句子都写出来啊!
    aBookName还会是变量阿!悲哀啊!
    应该是select * from xxx where col1 like '%"+aBookName+"%'
      

  15.   

    都不对呀。我这里用的是CMP。在Bmp下模糊查询很好实现,直接写sql语句就行,但是在CMP中like %aBookName%这种格式不对。8过,还是要谢谢大家了。希望大家继续支持。先祝大家新年快乐,羊年吉祥!!!
      

  16.   

    我也遇到了同样的问题,在jb7.0+weblogic6.1,cmp中的sql语句不正确,但是所有参考资料都是同样的写法,那位老兄试过,帮帮我!
      

  17.   

    Current EJB-QL spec allows for LIKE operator to be used. However it is not implemented in CMP
      

  18.   

    Well there's a workaround. you can't create: 
    select o from content where o.keywords like %?1% 
    But you can do: 
    select o from content where o.keywords like ?1 
    And pass the %'s into the method. 
    So your method call might look like: 
    home.findByKeyword("%" + realKeyWord + "%"); 
    Kind of a pain. But it works.