ここでは、Enterprise JavaBeans (EJB) スキーマの例と、 照会の例のセットを紹介します。
Entity Bean 名 (EJB 名) | DeptEJB (照会では使用されません) |
抽象スキーマ名 | DeptBean |
インプリメンテーション・クラス | com.acme.hr.deptBean (照会では使用されません) |
永続属性 (cmp フィールド) |
|
関係 |
|
Entity Bean 名 (EJB 名) | EmpEJB (照会では使用されません) |
抽象スキーマ名 | EmpBean |
インプリメンテーション・クラス | com.acme.hr.empBean (照会では使用されません) |
永続属性 (cmp フィールド) |
|
関係 |
|
public class com.acme.hr.Address extends Object implements Serializable { public String street; public String state; public String city; public Integer zip; public double distance (String start_location) { ... } ; public String format ( ) { ... } ; }
SELECT OBJECT(d) FROM DeptBean d
SELECT OBJECT(d) FROM DeptBean d WHERE d.name LIKE 'Web%' ORDER BY d.name
SELECT OBJECT(d) FROM DeptBean d WHERE d."select" > 5
SELECT OBJECT (e) FROM EmpBean e WHERE e.dept.mgr.name='Bob'
SELECT OBJECT (e) FROM EmpBean e WHERE e.dept.mgr.name= ?1
SELECT OBJECT(d) FROM DeptBean d, IN (d.emps) AS e WHERE e.salary BETWEEN 50000 and 90000
この照会には、 各部門オブジェクトとそれに関連する従業員のコレクションとの間に結合操作が暗黙指定されています。 部門に従業員がいない場合は、その部門は結果に表示されません。 部門に 50000 より多くの報酬を得ている従業員が複数いる場合は、 その部門は、結果に複数回表示されます。
SELECT DISTINCT OBJECT(d) from DeptBean d, IN (d.emps) AS e WHERE e.salary > 50000
SELECT OBJECT(e) FROM EmpBean e where e.bonus > 0.40 * e.salary
SELECT OBJECT(d) FROM DeptBean d where d.budget < ( SELECT SUM(e.salary+e.bonus) FROM IN(d.emps) AS e )
SELECT OBJECT(e) FROM EmpBean e where year( '2000-01-01' - e.hireDate ) >= 20
SELECT OBJECT(e) FROM EmpBean e WHERE e.birthDate < 631180800232
SELECT OBJECT(d) from DeptBean d where d.emps IS EMPTY
SELECT OBJECT(e) FROM EmpBean e, EmpBean b WHERE b.name = 'Bob' AND e.salary + e.bonus > b.salary + b.bonus
SELECT OBJECT(e) from EmpBean e WHERE e.bonus = (SELECT MAX(e1.bonus) from EmpBean e1)
上記の照会はすべて EJB オブジェクトを戻します。 finder メソッド照会は、必ず、ホームの EJB オブジェクトを戻さなければなりません。 select メソッド照会は、これに加えて、CMP フィールドか、 またはホームに属さないその他の EJB オブジェクトを戻すことができます。
SELECT d.mgr FROM DeptBean d
SELECT d.mgr.name FROM DeptBean d WHERE d.deptno = 42
SELECT e.name FROM EmpBean e WHERE e.dept.deptno=42
SELECT e.name from DeptBean d, IN (d.emps) AS e WHERE d.deptno=42
SELECT max(e.salary) FROM EmpBean e WHERE e.dept.deptno=42
SELECT e.name, e.salary+e.bonus as total_pay , object(e), e.dept.mgr FROM EmpBean e ORDER BY 2
SELECT e.dept.deptno as department_number , count(*) as employee_count FROM EmpBean e GROUP BY by e.dept.deptno ORDER BY 1
SELECT object(e), e.address.format( ) FROM EmpBean e EmpBean e