Tilsvarende er HQL
select header.advmagencymaster.mamaid,
header.advmagencymaster.mamaname,header.trohiono
from ADVRoheader header
Men i HQL er det bedre at hente hele objektet, så vi også kan bruge de andre egenskaber
from ADVRoheader header
inner join
header.advmagencymaster master
HQL er ikke afhængig af den underliggende database. Det vil være det samme for alle databaser (Oracle, Mysql, SQL-server osv.). Kun vi skal ændre databaseforbindelsen i hovedkonfigurationsfilen.
Dine modelklasser vil se sådan ud
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}
Du har allerede defineret en mange-til-én-relation i xml
<many-to-one name="advmagencymaster" class="com.adv.hibernatebean.ADVMAgencyMaster" fetch="select"> <column name="TROHAMAID" /></many-to-one>
Så mens indlæsning af ADVRoheader-objekt vil hibernate også indlæse den indre objektreference "advmagencymaster".
for dette skal du angive lazy="false" i stedet for fetch="select".
lazy="true" - doven indlæsning vil det kun indlæse overordnet objekt
doven-"falsk" - ivrig indlæsning vil den indlæse underordnede(indre) objekt også med overordnet objekt.
tilføj begge hbm.xml-filer til hovedkonfigurationsfilen (hibernate.cfg.xml) som følger
<mapping resource="com/ADVRoheader.hbm.xml"></mapping>
<mapping resource="com/ADVRomaster.hbm.xml"></mapping>
lige før session fabrik lukker tag her sker kortlægningen med Database.
Normalt for generatorelementer skal vi bruge typen heltal og også foretage ændringen i databasen.
Ekstra filtrering kan vi tilføje 'where'-sætning efter hovedforespørgslen. Her kræves kun sammenføjningsbetingelser, og den håndteres allerede af dvaletilstand.