Rejoindre sans association dans HQL

Disons que j’ai deux tables (A, B) comme:

A {id, a, c} B {id, b, c} 

J’ai aussi leurs entités. Je veux écrire un HQL pour que le jeu de résultats soit comme (où Ac = Bc):

 (a1, b1, c1) (a2, b2, c2) (a3, b3, c3) ... 

Puisque on clauses on ne sont pas supscopes par la mise en veille prolongée, je suis bloqué et je ne sais pas comment écrire la requête.

Vous devez utiliser la notation de jointure croisée:

 from A as table_a , B as table_b where table_a.c = table_b.c 

Bien sûr, il n’y a aucun moyen de mettre en œuvre des jointures externes de cette manière, vous pourriez donc avoir des problèmes si tel est votre cas.

Pour le cas analogue avec des critères se référer à: hibernate-criteria-joins-table-without-a-mapped-association

Si vous souhaitez créer une jointure externe, vous pouvez créer une sous-requête et gérer une opération OR (cela fonctionne pour moi). ça rend la requête plus complexe et moins performante mais ça marche 🙂

Si les deux tables sont liées par une clé étrangère, vous pouvez essayer ceci:

laisser:

A {id (clé primaire), a, c} B {id (clé étrangère), b, c}

définir une variable de type parent (A) avec setter et getter dans le fichier pojo.a de la classe B, après quoi vous pouvez écrire une requête de cette manière. laissez-le ‘AA’

 select tbl_b.a,tbl_a.a,tbl_b.b,tbl_a.b,tbl_b.c,tbl_a.c from B tbl_b inner join tbl_b.AA tbl_b