Reglas para la manipulación de tipos de datos en una consulta de EJB

Cuando se utiliza una consulta de EJB (Enterprise JavaBeans) para trabajar con tipos de datos se deben seguir reglas determinadas.

Puede utilizar un campo CMP de cualquier tipo en una cláusula SELECT. Sin embargo, debe utilizar campos de los tipos siguientes solamente para las condiciones de búsqueda y las operaciones de agrupación o clasificación:

Si se cumplen TODAS las condiciones siguientes:
  • un campo CMP de uno de los tipos básicos de la lista anterior se correlaciona con una columna SQL utilizando un conversor
  • el campo CMP aparece antes de un predicado básico
  • después del predicado hay un parámetro de entrada o literal
se utiliza el método toData() del conversor para calcular el valor de búsqueda SQL.

Por ejemplo, en el caso de un convertido que correlaciona el valor integer 10 con el valor string "Ten", la consulta de EJB siguiente:

e.cmp = 10

se traduce en la consulta SQL siguiente:

column = 'Ten'

Si incluye un predicado más complicado, como en el siguiente ejemplo:

e.cmp * 10 >  e.salary

en una consulta finder o select, recibe el mensaje de error No se puede ejecutar push en la consulta. Utilice el servicio de consultas de EJB dinámicas para las consultas de multifunción; el tiempo de ejecución de la consulta dinámica procesa el predicado en el servidor de aplicaciones.

Sobre todo, un convertidor conserva la igualdad, la secuencia de cotejo y los valores nulos. Si un convertidor no cumple los requisitos, evite utilizarlo en las operaciones de comparación de campos CMP.

Un tipo de usuario no puede utilizarse en una operación de comparación o expresión. Puede, sin embargo, utilizar subcampos del tipo de usuario en una expresión de vía de acceso. Por ejemplo, supongamos un campo CMP addr con el tipo com.exam.Address, y los subcampos street, city y state. La sintaxis siguiente para una consulta sobre este campo CMP no es válida:

e.addr =  ?1

No obstante, una consulta que designe uno de los subcampos es válida:

e.addr.street = ?1

Un campo CMP se puede correlacionar con una columna SQL utilizando la serialización Java. Si se utiliza el campo CMP en predicados o expresiones de consultas de despliegue, normalmente aparece el mensaje de error No se puede ejecutar push en la consulta. El tiempo de ejecución de la consulta dinámica procesa la expresión leyendo y deserializando todas las instancias del tipo de usuario en el servidor de aplicaciones.

No obstante, este es un proceso costoso que sacrifica el rendimiento. Puede mantener el nivel de rendimiento si utiliza una herramienta de creación en una consulta de EJB de despliegue. En el ejemplo anterior, si desea correlacionar el campo addr con un tipo binario, utilizará una herramienta de creación con la que correlacionar cada subcampo a una columna binaria de la base de datos.


Icon that indicates the type of topic Concept topic



Timestamp icon Last updated: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=cque_datatyperules
File name: cque_datatyperules.html