Hibernate jointure interne à l'aide de requêtes hql
Je suis nouveau sur mise en veille prolongée. J'ai deux tables, par exemple, student
et phone number
et ces deux tables ont une colonne commune, student id
.
Je veux faire une jointure interne avec ces deux tableaux en utilisant Hibernate hql.
student.java
{
private int id;
private String name;
}
phone.java
{
private int pid;
private int sid; //same id in student.java
private int phone_number;
}
OriginalL'auteur Livin As | 2012-09-13
Vous devez vous connecter pour publier un commentaire.
Lire la documentation de nouveau. Vous n'êtes pas censé avoir l'ID de l'étudiant de Téléphone dans l'entité. Plutôt, vous êtes censé avoir une association entre les deux entités: un Téléphone appartient à un Étudiant:
Alors seulement vous serez en mesure d'utiliser des jointures:
Bien sûr, vous pouvez: où téléphone.propriétaire.l'école.pays.nom = 'USA' par exemple. Ceci est expliqué dans l'excellente documentation Hibernate. La lire.
ok merci..alors comment peut-on parcourir les résultats de la requête pour un de nombreuses de nombreuses relations dans hibernate ..je vais essayé beaucoup de choses.Mais je ne peux pas l'atteindre.
c'est ma Chaîne de requête hql = "select e.employee_id,m.meeting_id de l'Employé e joindre à l'e.les réunions de m"; query = session.createQuery(hql);
Cette requête renvoie un
List<Object[]>
. Chaque Objet[] contient l'ID de l'employé comme premier élément, et l'ID de réunion comme second élément.OriginalL'auteur JB Nizet
Avec les deux classes comme en veille prolongée est pas au courant de l'association qui rend la vie difficile. Ce qui serait normal c'est de faire le sid dans le téléphone de la classe réelle de l'Étudiant objet d'hibernate est conscient de l'association. par exemple,
avoir fait cela, alors vous pouvez faire un simple HQL rejoindre par exemple
Sinon, si pour une raison quelconque, vous souhaitez que le cru de l'ID de l'objet, alors vous pouvez utiliser un "théta-jointure" où vous spécifiez explicitement l'association comme un normal Jointure SQL. E. g.
OriginalL'auteur EdC
Veuillez trouver ci-dessous le HQL:
SELECT * from étudiant ST INNER JOIN numéro de téléphone, PN SUR ST.id = PN.id où SAINT.Nom='XXXX'
OriginalL'auteur Sudhir Mane