--Ads--
Identify correct and incorrect statements or examples about the purpose and
use of EJB QL.
Find all orders:
SELECT OBJECT(o)
FROM Order o
Find all orders that need to be shipped to Colorado:
SELECT OBJECT(o)
FROM Order o
WHERE o.shipping_address.state = 'CO'
Find all states for which there are orders:
SELECT DISTINCT o.shipping_address.state
FROM Order o
Find all orders that have line items:
SELECT DISTINCT OBJECT(o)
FROM Order o, IN(o.lineItems) l
This query can also be written as:
SELECT OBJECT(o)
FROM Order o
WHERE o.lineItems IS NOT EMPTY
Find all orders that have no line items:
SELECT OBJECT(o)
FROM Order o
WHERE o.lineItems IS EMPTY
Find all pending orders:
SELECT DISTINCT OBJECT(o)
FROM Order o, IN(o.lineItems) l
WHERE l.shipped = FALSE
Find all orders in which the shipping address differs from the billing
address. This example assumes that the Bean Provider uses two distinct entity
beans to designate shipping and billing addresses:
SELECT OBJECT(o)
FROM Order o
WHERE NOT
(o.shipping_address.state = o.billing_address.state AND
o.shipping_address.city = o.billing_address.city AND
o.shipping_address.street = o.billing_address.street)
If the Bean Provider uses a single entity bean in two different relationships for
both the shipping address and the billing address, the above expression can be
rewritten as:
SELECT OBJECT(o)
FROM Order o
WHERE o.shipping_address <> o.billing_address
Find all orders for a book titled 'Head First EJB':
SELECT DISTINCT OBJECT(o)
FROM Order o, IN(o.lineItems) l
WHERE l.product.type = 'book' AND
l.product.name = 'Head First EJB'
The following query finds the orders for a product whose name is designated by
an input parameter (the input parameter must be of the type of
the product name, i.e., a String):
SELECT DISTINCT OBJECT(o)
FROM Order o, IN(o.lineItems) l
WHERE l.product.name = ?1
The following EJB QL query selects the names of all products that have been ordered.
It illustrates the selection of values other than entity beans, therefore it can
be used only for SELECT methods, not for FINDER methods:
SELECT DISTINCT l.product.name
FROM Order o, IN(o.lineItems) l
The following query finds the names of all products in the order
specified by a particular order number.
SELECT l.product.name
FROM Order o, IN(o.lineItems) l
WHERE o.ordernumber = ?1
The following query returns the names of all the cities of the shipping
addresses of all orders. The result type of the SELECT method, which is either
java.util.Collection or java.util.Set,
determines whether the query may return duplicate city names.
SELECT o.shipping_address.city
FROM Order o