Generar beans que contienen conjuntos de resultados de sentencias SELECT de SQL

Puede generar un bean para que contenga el conjunto de resultados que la sentencia devuelve. Puede utilizar una sentencia SELECT de SQL que se encuentre en cualquier literal de serie de una clase Java™ que contenga una sentencia SELECT de SQL válida, siempre que la clase Java aparezca en un proyecto Java que soporte pureQuery.

Procedimiento

Para generar un bean que contenga el conjunto de resultados de una sentencia SELECT.

  1. En el editor Java, coloque el cursor de texto dentro de la sentencia, pulse con el botón derecho del ratón la sentencia y, a continuación, seleccione Desarrollo de acceso a datos > Generar código pureQuery. Se abrirá el asistente para Generar código pureQuery a partir de una sentencia SQL.
  2. Efectúe los pasos que le indique el asistente.
  3. Pulse Finalizar para generar el bean.

Resultados

Si no utiliza cláusulas AS en consultas SQL que produzcan uniones, o que contengan columnas calculadas, los conjuntos de resultados pueden contener columnas con nombres que no sean exclusivos. Si el entorno de trabajo puede resolver este problema al generar un bean para representar los conjuntos de resultados dependerá del tipo de base de datos que la aplicación utiliza.
  • DB2 para Linux®, UNIX® y Windows®; DB2 para z/OS; Informix Dynamic Server: el entorno de trabajo utiliza la anotación @Column en las propiedades que se correlacionan con las columnas que tienen el mismo nombre que una o varias columnas.
    Por ejemplo, suponga que la aplicación ejecuta la siguiente consulta simple:
    	select a.col1, b.col1 from a, b where a.id=b.id;
    Los métodos set() para las propiedades correspondientes de los beans que contienen los resultados de la consulta necesitan anotaciones @Column que proporcionen el nombre de la tabla en la que aparecen las dos columnas de id:
    public class JoinExample{
    
      private int a_id;
      private int b_id;
    
      @Column (name="id", table="a")
      public void setA_id (int a_id)
      {
        this.a_id = a_id;
      }
      public int getA_id ()
      {
        return a_id;
      }
    
      @Column (name="id", table="b")
      public void setB_id (int b_id)
      {
        this.b_id = b_id;
      }
      public int getB_id ()
      {
        return b_id;
      }
    }
  • Oracle: el entorno de trabajo no utiliza el atributo table de la anotación @Column para correlacionar columnas problemáticas con propiedades del bean. Debe correlacionarlas de una de estas maneras:
    • Utilice la cláusula AS de la sentencia SELECT para asignar nombres exclusivos a las columnas de resultados de la consulta.
    • Utilice un RowHandler que pueda trabajar con columnas de resultados de la consulta por sus números de índice, en lugar de por sus nombres. Consulte Interfaz RowHandler <ROW>.

Comentarios