这个HQL查询有什么问题?

时间:2014-05-29 01:53:32

标签: java sql hibernate java-ee jpa

我在UtilisateurProjet之间有一个ManyToMany关系,我希望提取项目实体中不存在的所有用户以及分配给“Terminé”的用户(statut的值:{{1 }} property)项目然后这是我的查询:

Projet

生成的sql查询:

select u from Utilisateur u left join u.projets p where p is null and  p.statut like 'Terminé'

这是我的Hibernate: select utilisateu0_.iduser as iduser5_, utilisateu0_.datederniereconnexion as datedern2_5_, utilisateu0_.email as email5_, utilisateu0_.grade as grade5_, utilisateu0_.login as login5_, utilisateu0_.mdp as mdp5_, utilisateu0_.nomuser as nomuser5_, utilisateu0_.tel as tel5_ from public.utilisateur utilisateu0_ left outer join projet_utilisateur projets1_ on utilisateu0_.iduser=projets1_.utilisateurs_iduser left outer join public.projet projet2_ on projets1_.projets_idprojet=projet2_.idprojet where (projet2_.idprojet is null) and (projet2_.statut like 'Terminé') 实体:

Projet

这是@Entity public class Projet implements Serializable { @Column(name = "idprojet", nullable = false) @Id @GeneratedValue(strategy=GenerationType.IDENTITY) Integer idprojet; String statut; @ManyToMany( mappedBy="projets", fetch = FetchType.LAZY) List<Utilisateur> utilisateurs; } 实体:

Utilisateur

问题是它没有显示任何用户

1 个答案:

答案 0 :(得分:1)

从您的评论:我想提取没有任何项目的用户以及拥有该项目法规为“Terminé”的项目的用户

我认为您希望在OR条件中使用AND代替WHERE

select u 
from Utilisateur u 
    left join u.projets p 
where p is null 
    or p.statut = 'Terminé'