Bonjour tout le monde ! ça faisait longtemps que je n'étais pas venu ici. A croire que je m'améliore en programmation. Enfin, non je suis de retour ici.

Voilà mon problème j'ai écrit la requête HQL suivante :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
delete Eta
		where codeEtablissement not in (select distinct id.codeEtablissement from EtaJry)
		and codeEtablissement not in (select distinct codeEtablissement from Mis)
Elle est à priori correcte car j'arrive à récupérer sa traduction SQL :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
delete  from  IMAGIN.ETA  where
  ( COD_ETA not in  ( select distinct etajry1_.COD_ETA from IMAGIN.ETA_JRY etajry1_ ) ) 
  and ( eta0_.COD_ETA not in  ( select distinct mis2_.COD_ETA from IMAGIN.MIS mis2_ ) )
Or voilà le problème lors de la conversion SQL Hibernate me crée un alias eta0_ qui me rend une SQLGrammarException à l'exécution de la requête SQL car cet alias n'est pas défini dans la requête.

Le problème est le même en inversant les deux clauses du WHERE.
Par contre si on remplace le DELETE par un SELECT, plus de problème de conversion :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 select bla, bla, bla from
  IMAGIN.ETA eta0_ 
 where
  (
   eta0_.COD_ETA not in  (
    select
     distinct etajry1_.COD_ETA 
    from
     IMAGIN.ETA_JRY etajry1_
   )
  ) 
  and (
   eta0_.COD_ETA not in  (
    select
     distinct mis2_.COD_ETA 
    from
     IMAGIN.MIS mis2_
   )
  )
J'ai bien essayé de déclarer des alias dans tous les sens notamment pour la table Eta mais ceux-ci sont ignorés.

Là je sèche.