2014-09-20 103 views
0

我有2个实体,Aluno和Matricula。我想要返回没有Matricula的所有Aluno。为此,我尝试使用JPQL的IS NULL,但仍然无法完成这项工作。在JPQL中使用IS NULL?

我该怎么做?

我正在试着这个。

@Entity 
public class Aluno{ 
    @Id @GenerateValue 
    private Long id; 

    @OneToOne 
    private Matricula matricula 
} 


@Entity 
public class Matricula{ 
    @Id @GenerateValue 
    private Long id; 

    @OneToOne 
    private Aluno aluno; 
} 

// 
public List<Aluno> getAlunosWithoutMatricula(){ 
    String jpql = "SELECT a FROM Aluno a JOIN a.matricula mat WHERE mat IS NULL"; 
     TypedQuery<Aluno> query = em.createQuery(jpql, Aluno.class); 
     return query.getResultList(); 
} 
+0

您的问题正在使用中加入。当你使用join时,这意味着你使用inner join。为了解决这个问题,你可以使用左连接而不是连接。 – 2014-09-21 11:39:14

回答

1

我解决了这个问题

这里。

public List<Aluno> getAlunosWithoutMatricula(){ 
    String jpql = "SELECT a FROM Aluno a WHERE (a.matricula IS NULL)"; 
     TypedQuery<Aluno> query = em.createQuery(jpql, Aluno.class); 
     return query.getResultList(); 
}