Sintaxe de Consulta do Mediador EJB
Ao começar a gravar seus aplicativos para tirar vantagem do serviço do mediador de dados (DMS) Enterprise JavaBeans (EJB) fornecido no produto, considere os seguintes itens.
- O DMS EJB utiliza como um argumento de entrada uma consulta EJB composta que consiste em uma matriz contendo instruções QL (Query Language) EJB e um comando XREL opcional. O comando XREL é uma lista de relacionamentos EJB e deve aparecer por último na matriz.
- Cada consulta QL EJB retorna dados na forma de uma instância SDO (Service DataObjects). Todas as instâncias SDO são mescladas com um Gráfico de Dados. A cláusula SELECT da consulta especifica os campos ou expressões de CMP (Container-Managed Persistence) para retornar no SDO. A cláusula WHERE especifica as condições de filtragem e você pode definir uma cláusula ORDER BY. Se dois ou mais SELECTs retornarem o mesmo tipo de SDO, cada SELECT deverá projetar os mesmos campos e expressões CMP. Para possibilidade de atualização, os campos de chave primária do EJB devem estar projetados para isso. JUNÇÕES, UNIÕES e agregação não são suportados, exceto em subconsultas.
- Uma consulta na matriz pode fazer referência a uma consulta anterior na cláusula FROM, utilizando a variável de identificação definida na consulta anterior e um nome de relacionamento. Esse relacionamento pode ser com valor único ou com valor de coleta.
- Relacionamentos são construídos entre as instâncias de objeto de dados no gráfico quando um relacionamento é utilizado na cláusula FROM ou no comando XREL.
- Os argumentos de entrada com valor de coleta são suportados na cláusula FROM. Se ?1
fizer referência a uma coleta de EJBs Dept, a consulta a seguir será válida para
o mediador. A sintaxe de conversão é necessária para indicar ao compilador de consulta
o tipo de elemento de coleta.
select d.deptno from (Dept) ?1 as d
- O argumento de entrada de coleta é útil quando deseja-se construir um Gráfico de Dados de instâncias EJB que estão armazenadas em cache no Contêiner EJB ou no cache de dados do gerenciador de persistência.
- A cláusula SELECT pode especificar uma lista de campos CMP a serem recuperados (a notação
* curinga pode ser utilizada para recuperar todos os campos CMP) ou expressões válidas de
linguagem de consulta EJB. Os campos e expressões CMP devem ser um dos seguintes tipos:
- Tipos primitivos: boolean, byte, short, integer, long, float, double, char
- Tipos de wrapper do objeto para tipos primitivos
- Java™.lang.String
- Java.math.BigDecimal
- java.math.BigInteger
- byte [ ]
- Java.sql.Date
- java.sql.Time
- java.sql.Timestamp
- java.util.Date
- java.util.Calendar
- Todos os campos CMP de chave primária devem ser recuperados em ordem para que o SDO (Service) Data Objects) seja atualizável; caso contrário, applyChanges retornará uma exceção.
- Os atributos SDO que são provenientes de expressões de linguagem de consulta EJB como e.salary + e.bonus AS TOTAL_PAY não podem ser atualizados. Se você tentar fazer uma atualização, applyChanges retornará uma QueryException.
- Expressões agregadas como SUM(e.salary) não são permitidas mesmo que façam parte da linguagem de consulta EJB. As expressões agregadas podem ser utilizadas em subseleções na cláusula WHERE.