title: JPA nested inner join query
body: <p>I have 3 tables and a ManyToMany relationship between usuario and projeto, and I'm having a headche to make it search accordly :</p>
  
  <pre><code>usuario
  +-------------+-------------+
  | idMatricula | nomeUsuario | 
  +-------------+-------------+
  | 1           | Victor      | 
  | 12345       | Juquinha    |
  | 2           | Nilton      | 
  | 3           | Fatima      | 
  | 4           | Bianca      | 
  | 4422        | Pedrinho    | 
  +-------------+-------------+
  
  projeto
  +-----------+----------------+--------------+
  | idprojeto | nomeProjeto    | faseProjeto  |
  +-----------+----------------+--------------+
  |         1 | APS_6_semestre | Em Andamento |
  |         2 | APS_7_semestre | Em testes    |
  |         3 | APS_8_semestre | Em testes    |
  |         4 | TCC            | Concluido    |
  +-----------+----------------+--------------+
  
  projeto_has_usuario
  +-------------------+---------------------+
  | projeto_idprojeto | usuario_idMatricula |
  +-------------------+---------------------+
  |                 1 | 1                   |
  |                 1 | 2                   |
  |                 1 | 3                   |
  |                 2 | 2                   |
  +-------------------+---------------------+
  </code></pre>
  
  <p>I'm trying to query only the projects associated to the user, but my query doesnt work and I dont know if it is a semantic error or an annotation error. Here is my mapped class: </p>
  
  <p>Projeto:</p>
  
  <pre><code>@Entity
  @Table(name="projeto")
  public class Projeto {
  
  @GeneratedValue
  @Id
  @Column(name="idprojeto", nullable = false)
  private int idprojeto;
  
  @Column(name="nomeProjeto", nullable = false)
  private String nomeProjeto;
  
  @Column(name="faseProjeto", nullable = false)
  private String faseProjeto;
  
  @ManyToMany(mappedBy="projetos")
  private List&lt;Usuario&gt; usuarios;
  </code></pre>
  
  <p>Usuario:</p>
  
  <pre><code>@Entity
  @Table(name="usuario")
  public class Usuario {
  
  @Id
  @Column(name="idMatricula", nullable = false)
  private String id;
  
  @Column(name="nomeUsuario", nullable = false)
  private String nomeUsuario;
  
  @ManyToMany(cascade = CascadeType.ALL)
  @JoinTable(name="projeto_has_usuario",
  joinColumns={@JoinColumn(name="usuario_idMatricula")},
  inverseJoinColumns={@JoinColumn(name="projeto_idprojeto")})
  private List&lt;Projeto&gt; projetos;
  </code></pre>
  
  <p>Here is my query:</p>
  
  <pre><code>TypedQuery&lt;Usuario&gt; listaUsuario = manager.createQuery("SELECT u FROM Usuario as u", Usuario.class);
  // Some validation ..
      TypedQuery&lt;Projeto&gt; listaTabela = manager.createQuery("SELECT p FROM projeto p "
      + "JOIN p.usuarios u WHERE p.idprojeto MEMBER OF u.projetos", Projeto.class);
  
      for (Projeto projetos : listaTabela.getResultList()) {
          System.out.println("Nome: " + projetos.getNomeProjeto() + "\nID: " + projetos.getIdprojeto()
          + "\nFase: " + projetos.getFaseProjeto());
  </code></pre>
  
  <p>Returns me:</p>
  
  <pre><code>Nome: APS_6_semestre
  ID: 1
  Fase: Em Andamento
  </code></pre>
  
  <p>I'm using Eclipse IDE 4.7.2, Hibernate 5.2.12 and JPA 2.1.</p>