sql >> Base de Datos >  >> RDS >> Oracle

¿ÚNETE con condición en la consulta HQL?

Correspondiente es HQL

  select header.advmagencymaster.mamaid,
         header.advmagencymaster.mamaname,header.trohiono 
         from ADVRoheader header 

Pero en HQL es mejor recuperar el objeto completo para que podamos usar las otras propiedades también

   from ADVRoheader header 
   inner join 
   header.advmagencymaster master

HQL no depende de la base de datos subyacente. Será lo mismo para todas las bases de datos (Oracle, Mysql, servidor SQL, etc.). Solo necesitamos cambiar la conexión de la base de datos en el archivo de configuración principal.

Tus clases modelo se verán así

class ADVMAgencyMaster{
  private String mamaid;
 private String mamaname;  //getters and setters
}

class ADVRoheader{
 private String trohiono;
 private ADVMAgencyMaster advmagencymaster;     // Reference to the ADVMAgencyMaster
 //getters and setters}

Ya definiste una relación de muchos a uno en xml

 <many-to-one name="advmagencymaster" class="com.adv.hibernatebean.ADVMAgencyMaster" fetch="select"> <column name="TROHAMAID" /></many-to-one>

Entonces, mientras se carga el objeto ADVRoheader, hibernación también cargará la referencia del objeto interno "advmagencymaster".

para esto necesitas especificar lazy="false" en lugar de fetch="select".

lazy="true" - lazy loading solo cargará el objeto padre

perezoso-"falso" - la carga ansiosa cargará el objeto secundario (interno) también con el objeto principal.

agregue ambos archivos hbm.xml al archivo de configuración principal (hibernate.cfg.xml) de la siguiente manera

 <mapping resource="com/ADVRoheader.hbm.xml"></mapping>
 <mapping resource="com/ADVRomaster.hbm.xml"></mapping> 

Justo antes de la etiqueta de cierre de la fábrica de sesión aquí, el mapeo está ocurriendo con la base de datos.

Por lo general, para los elementos generadores necesitamos usar el tipo entero y hacer el cambio en la base de datos también.

Filtrado adicional podemos agregar la cláusula 'where' después de la consulta principal. Aquí solo se requiere la condición de unión y ya está manejada por hibernate.