EJB QL :EJB Query LanguageU P

解决方案 »

  1.   

    我用过一下,觉得不错,你可以看看j2ee的教程,比如:
    SELECT OBJECT(t) 
    FROM Team AS t 
    WHERE t.city.name = ?1选出某个城市里面的所有球队,Team是schemaName,t是别名
    t.city是与Team关联的CityBean的cmr字段,name是CityBean的一个
    cmp字段,而?1是方法的参数,后面的1代表第一个参数
      

  2.   

    给你个好去处:http://java.sun.com/j2ee/tutorial/1_3-fcs/doc/EJBQL.html
      

  3.   

    我对基本的了解了一点,只是对于它的有关IN 的用法和什么时侯用有困惑,以及ejbSelect<:METHOD> 和 ejbSelect<:METHOD>InEntity的用法,还有通过关联对象的关联关系的实现,各位给系统讲讲吧。
    保证有分。
      

  4.   

    mastering ejb 2的附录d有教程
      

  5.   

    jbuilder的帮助里也有相关语法、例子等等。
      

  6.   

    别人的东西:
    EJB QL简明使用指南  
     
    EJB2.0 规范介绍了EJB QL,一种用于实体Bean的finders的轻便的(容器无关的)查询语言。EJB QL是一种类SQL语言,它用单个WHERE字句去选择一个或多个实体Bean对象。EJB QL的查询范围是多个EJB的列表,它们被定义在ejb-jar.xml文件中(Bean的所有CMP的字段的集合和它们相关的数据库字段)。因为EJB QL是容器无关的,所以被定义在ejb-jar.xml中而不是在weblogic-cmp-rdbms-jar.xml中。 基本语法 基本的EJB QL查询包括一个命令和一个FROM字句,以及一个WHERE子句。 
    WHERE子句定义了查询结果集的限制条件,与WLQL语言类似。所以,下面重点阐述的EJB QL子句和操作符。 注意:因为 EJB QL 查询字串可能包括">" 和 "<" 字符,所以它总是放在CDATA标签中,以避免与XML的标签冲突。 EJB QL 中的字串 与 WLQL一样,EJB QL 用单引号指定字串值。 如果在字串值中表示单引号,可以用两个连续的单引号,如: 
    WHERE accountType = 'partner''s' Finder 参数占位符 EJB QL 可以用?n描述finder方法的参数, n 是这个参数在finder方法参数表中的位置。在EJB QL,第一个参数描述为?1。 注意: 如果你对WLQL很熟悉,这里要注意的是EJB QL不同于WLQL ,它的参数点位符是从1开始的,而WLQL却是从0开始,所以在WLQL语言中,第一个参数是0,(即$0),但是在EJB QL中却是1,即(?1)。 EJB QL 操作符 EJB QL 使用的逻辑和数学操作符与WLQL相类似,可以参考 Migrating from WLQL to EJB QL 一节内容。关于EJB QL操作符更多信息可以参考EJB 2.0 specification 。 Finder方法 实体Bean的home接口定义了一个或多个finder方法。它定义了各种方法在home中查找一个实体对象或多个实体对象的集合。实体bean的实现使用这个finder方法的参数去定位一个实体对象。这些finder方法必须要与一个在布署描述符中的query元素相关联。实体bean在布署描述符中规范了EJB QL查询字串并且与finder方法关联在一起。finder 方法在query元素中被字符化成EJB QL查询字串。 Select 方法 Select 方法是实体Bean实例中一些特别的finder方法。Select 方法是在实体Bean的实现类中定义的抽象方法。这些方法被定义成为EJB QL查询字串。尽管这些Select方法与finder方法很相似,但是它们可以返回任何一个CMP字段或CMR字段。EJB QL字串规定一个Select方法必须有一个指定了返回类型的SELECT子句。由一个调用查询字串的EJB实例来执行相关的Select方法。 EJB QL 条件表达式 下面总结了所有的你可以在EJB QL查询的WHERE子句中使用的条件表达式。如需更多信息,请参考EJB 2.0 specification : EJB QL表达式
     功能
     举例
     
    [NOT] BETWEEN
     指定字段值在(或不在)一个给出的范围值内。 
     WHERE accountId BETWEEN 1000 and 2000
     
    [NOT] IN
     查找那些指定字段与特定的字符串列表中元素相匹配的EJB。注意:这个列表只能包含字符串。
     WHERE accountId IN ('1000', '1020', '1025')
     
    [NOT]EQUAL
     选择相等。在这个beta版:l         不支持远程关系;NOT EQUAL 只支持CMP 字段; l         不支持关第,只支持CMP字段和本地EJB接口;  
     WHERE accountId EQUALS 1000 = 1000
     
    [NOT] LIKE 
    ESCAPE
     根据通配符(%) 和提供的text_string 查找匹配的EJB对象。在这个Beta版:·    不接受参数作为变量;使用 ESCAPE 选项可能会产生错误; 
     WHERE accountType LIKE `custom%'
     
    IS [NOT] NULL
     测试一个NULL值本beta版:·    不支持 1 - N 关系,如果这个N的角色被测试为NULL时。不支持对称的 M-N 关系,M-N 包括相同的Bean和CMR 字段。 
     WHERE accountId IS NOT NULL
     
    EJB QL 例子 下面从ejb-jar.xml文件中引用了一些例子来描述EJB QL查询字串。 这个例子返回一个AccountBean的集合,它们的balance值是大于在findBigAccounts方法中传递的参数: <query> 
      <query-method> 
        <method-name>findBigAccounts</method-name> 
        <method-params> 
          <method-param>double</method-param> 
        </method-params> 
      </query-method> 
      <ejb-ql> 
        <![CDATA[WHERE balance > ?1]]> 
      </ejb-ql> 
    </query> 下面的例子ejb-ql元素返回一个account balance: <ejb-ql><![CDATA[WHERE accountType IN ('partners', 'channels')]]></ejb-ql> 下面的例子ejb-ql元素返回一个EJB集合,他们的accoutType字段是NULL: <ejb-ql><![CDATA[WHERE 
    accountType IS NULL]]></ejb-ql>   译自Weblogic帮助文档,译者:sharetop([email protected]
     
      

  7.   

    good,基本的我有一些了解,主要是有一些方面不太清楚。比如上面的一个例子:
    SELECT OBJECT(t) 
    FROM Team AS t 
    WHERE t.city.name = ?1 与
    SELECT OBJECT(t) 
    FROM Team AS t,IN (t.city) AS c 
    WHERE c.name = ?1  有何区别?
    一定给分的
      

  8.   

    to gja106(中文字符) :我刚想来为我的网站做个宣传,就发现老弟你先了, 多谢:)不如去我的站点读这篇文章吧: http://www.sharetop.com