Quando faço o INNER JOIN no terminal, aparecem as tabelas no console:
MariaDB [alura_jpa]> SELECT * FROM Movimentacao INNER JOIN Categoria ON Categoria.id = Movimentacao.id;
+----+---------------------+--------------+------------------+--------+----------+----+-----------+
| Id | data | descricao | tipoMovimentacao | valor | conta_id | id | nome |
+----+---------------------+--------------+------------------+--------+----------+----+-----------+
| 3 | 2021-02-21 05:52:27 | Viagem à RJ | SAIDA | 400.00 | 1 | 3 | Viagem |
| 4 | 2021-02-21 06:41:55 | Churrascaria | ENTRADA | 200.00 | 2 | 4 | Negócios |
| 5 | 2021-02-21 07:05:29 | Viagem à SP | SAIDA | 300.00 | 1 | 5 | Viagem |
| 6 | 2021-02-21 07:05:29 | Viagem à RJ | SAIDA | 400.00 | 1 | 6 | Negócios |
+----+---------------------+--------------+------------------+--------+----------+----+-----------+
4 rows in set (0.001 sec)
Já no eclipse, não apresenta erro, porém termina a execução sem mostrar o Sysout.
public class TesteJPQLMovimentacaoDeUmaCategoria {
public static void main(String[] args) {
EntityManagerFactory emf = Persistence.createEntityManagerFactory("contas");
EntityManager em = emf.createEntityManager();
String jpql = "SELECT m FROM Movimentacao m JOIN m.categorias c WHERE c = :pCategoria";
Categoria categoria = new Categoria();
categoria.setId(1L);
TypedQuery<Movimentacao> query = em.createQuery(jpql, Movimentacao.class);
query.setParameter("pCategoria", categoria);
List<Movimentacao> movimentacoes = query.getResultList();
movimentacoes.stream().forEach(m -> {
System.out.println("Categorias: " + m.getCategorias());
System.out.println("Descrição" + m.getDescricao());
System.out.println("Tipo: " + m.getTipoMovimentacao());
});
// movimentacoes.stream().forEach(System.out::println);
}
}
<property name="hibernate.show_sql" value="false" />
<property name="hibernate.format_sql" value="true" />