Network Deployment (Distributed operating systems), v8.0 > Develop and deploying applications > Develop Dynamic and EJB query > Develop applications that use EJB query > EJB query language


SELECT clause

The SELECT clause consists of either a single identification variable that is defined in the FROM clause, or a single valued path expression that evaluates to an object reference or container managed persistence (CMP) value. We can use the DISTINCT keyword to eliminate duplicate references.

For finder and select queries, the syntax of the SELECT clause is illustrated in the following example:

SELECT  [  ALL | DISTINCT  ]
 { single-valued-path-expression  |  aggregation expression  |  OBJECT ( identification-variable )  }

For a query that defines a finder method, the query must return an object type consistent with the home that is associated with the finder method. For example, a finder method for a department home can not return employee objects.


Example: SELECT clause

Find all employees that earn more than John:

SELECT OBJECT(e) FROM EmpBean ej, EmpBean e
WHERE  ej.name = 'John'  and e.salary > ej.salary

Find all departments that have one or more employees who earn less than 20000:

SELECT DISTINCT  e.dept  FROM EmpBean e where e.salary
< 20000

A select method query can have a path expression that evaluates to an arbitrary value:

SELECT  e.dept.name  FROM EmpBean e where e.salary
< 2000

The previous query returns a collection of names for those departments having employees earning less than 20000.

A select method query can return an aggregate value:

SELECT  avg(e.salary)  FROM EmpBean e


Example: Valid dynamic queries

For dynamic queries the syntax is as follows:

SELECT { ALL | DISTINCT }  [ selection , ]*  selection
selection  ::= { expression   |  scalar-subselect [[AS] id ] }

A scalar-subselect is a subselect that returns a single value.

The following are examples of dynamic queries:

SELECT e.name, e.salary+e.bonus as total_pay from EmpBean e
SELECT  SUM( e.salary+e.bonus) from EmpBean e where e.dept.deptno = ?1

EJB query language
Use EJB query

+

Search Tips   |   Advanced Search