Bonjour j'ai un soucis sur une requête complexe d'update HQL.
Tout d'abord j'ai une requête sql qui ressemble à ceci et qui fonctionne :
Et je voudrai la transformer en HQL comme ceci (je ne suis pas sûr que ce soit bon) mais l'idée est là :Code:
1
2
3
4
5
6
7
8
9
10
11 UPDATE apersonne a, apersonne e, fonctionrelation fr, afonction af, fonctions_rel_of_eleves fre, relationeleve r, astructure s SET a.structure_rattachement_fk = s.id WHERE a.id = af.personne_fk AND af.id = fr.id AND fr.type = "Autorite_parental" AND af.id = fre.afonctionofrel_id AND fre.relationeleve_id = r.id AND r.eleve_id = e.id AND e.structure_rattachement_fk = s.id AND a.categorie = 'Personne_relation_eleve' AND a.etat <>'Incertain' AND a.structure_rattachement_fk IS NULL
Et voici l'erreur que j'obtiens :Code:
1
2
3
4
5
6
7
8
9
10
11
12
13 EntityManager().createQuery( "UPDATE PersonneRelationEleve a SET a.structRattachement = ( SELECT e.structRattachement FROM FonctionRelation fr, RelationEleve r, Eleve e WHERE fr in elements(a.fonctions) AND fr.id = a.id AND fr.type = 'Autorite_parental' AND fr in elements(r.membresRelations) ) WHERE a.etat <>'Incertain' AND a.structRattachement IS NULL AND a.categorie = 'Personne_relation_eleve'").executeUpdate()
Pour expliquer rapidement PersonneRelationEleve et Eleve héritent tous les deux de APersonne, donc voilà le problème ! Y aurait il une solutions ? Car avec hibernate je ne peux pas indiquer, comme dans ma requête sql, les autres tables jointes entre le update et le set.Citation:
You can't specify target table 'APersonne' for update in FROM clause
Je sais que cela peut passer sans problème en nativeQuery, mais S'il y a une modifications dans les tables il faudra adapter cette requête, chose que je voudrais éviter...