Correspondant est HQL
select header.advmagencymaster.mamaid,
header.advmagencymaster.mamaname,header.trohiono
from ADVRoheader header
Mais en HQL, il est préférable de récupérer l'objet entier afin que nous puissions également utiliser les autres propriétés
from ADVRoheader header
inner join
header.advmagencymaster master
HQL ne dépend pas de la base de données sous-jacente. Il en sera de même pour toutes les bases de données (Oracle, Mysql, SQL Server, etc.). Nous devons uniquement modifier la connexion à la base de données dans le fichier de configuration principal.
Vos classes de modèles ressembleront à ceci
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}
Vous avez déjà défini une relation plusieurs à un en xml
<many-to-one name="advmagencymaster" class="com.adv.hibernatebean.ADVMAgencyMaster" fetch="select"> <column name="TROHAMAID" /></many-to-one>
Ainsi, lors du chargement de l'objet ADVRoheader, l'hibernation chargera également la référence d'objet interne "advmagencymaster".
pour cela, vous devez spécifier lazy="false" au lieu de fetch="select".
lazy="true" - le chargement paresseux ne chargera que l'objet parent
lazy-"false" - le chargement hâtif chargera l'objet enfant (interne) également avec l'objet parent.
ajoutez les deux fichiers hbm.xml dans le fichier de configuration principal (hibernate.cfg.xml) comme suit
<mapping resource="com/ADVRoheader.hbm.xml"></mapping>
<mapping resource="com/ADVRomaster.hbm.xml"></mapping>
juste avant la balise de fermeture de l'usine de session ici, le mappage se produit avec la base de données.
Habituellement, pour les éléments générateurs, nous devons utiliser le type entier et effectuer également le changement dans la base de données.
Filtrage supplémentaire, nous pouvons ajouter la clause 'where' après la requête principale. Ici, seule la condition de jointure est requise et elle est déjà gérée par hibernate.