路径表达式

路径表达式就是一个标识变量后跟导航运算符 ( . )和容器管理的持久性 (CMP) 或关系名称。

如果 cmr 字段是单值的,那么可以进一步导航得到 cmr 字段的路径表达式。如果路径表达式得到多值关系,那么路径表达式就此结束,并且无法进一步导航。如果路径表达式得到类型为值对象的 CMP 字段,那么可以导航至值对象的属性。

示例:值对象

假设 addressEmpBean 的 CMP 字段,它是值对象。
SELECT  object(e)  FROM EmpBean e
WHERE  e.address.distance('San Jose') < 10  and e.address.zip = 95037

如果您打算按值属性搜索,那么最好使用组合器模式将值对象属性映射至关系列。如果您以序列化格式存储值对象,那么必须从数据库检索每个值对象并进行反序列化。只能在动态查询中执行值对象方法。

路径表达式还可以指向 Bean 方法。必须在远程或本地 Bean 接口上定义方法。只能在动态查询中使用方法。您不能在单个查询语句中同时使用远程和本地方法。

如果查询包含远程方法,那么必须使用查询远程接口来执行动态查询。使用查询远程接口导致查询服务激活 Bean 并创建远程 Bean 接口的实例。

同样地,必须使用查询本地接口执行使用本地 Bean 方法的查询语句。这导致查询服务激活 Bean 和本地接口实例。

不要使用 get 方法来访问 Bean 的 CMP 和 cmr 字段。

如果方法有过载定义,那么过载方法的参数个数必须不同。

方法必须有非空返回类型和方法自变量,且返回类型必须是基本类型 byte、short、int、long、float、double、boolean、char 或来自以下列表的包装器类型:

Byte、Short、Integer、Long、Float、Double、BigDecimal、String、Boolean、Character、java.util.Calendar、java.sql.Date、java.sql.Time、java.sql.Timestamp、java.util.Date

如果方法的任何输入自变量是 NULL,那么假设方法返回 NULL 值,且不调用方法。

多个值的路径表达式在 FROM 子句中可以用作集合成员声明,在 WHERE 子句中与 IS EMPTY、MEMBER OF 和 EXISTS 谓词协同使用。

表 1. FROM 子句用法. 下表列出三种有效 From 子句用法和一种无效用法。
FROM 子句用法语句 有效性语句
FROM EmpBean e WHERE e.dept.mgr.name='Bob'
确定
FROM EmpBean e WHERE e.dept.emps.name='BOB'
INVALID - 无法通过 emps 导航,因为它是多值的
FROM EmpBean e,  IN (e.dept.emps) e1
WHERE e1.name='BOB'
确定
FROM EmpBean e WHERE e.dept.emps IS EMPTY
确定

指示主题类型的图标 概念主题



时间戳记图标 最近一次更新时间: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=cque_path
文件名:cque_path.html