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.