Olá, boa tarde!
Nessa aula, vocês poderiam ter comparado a sintaxe java com a sintaxe SQL para clarear um pouco mais as ideias.
Para quem já conhece bem o SQL, acabou ficando um pouco confuso a sintaxe jpql, pois ao invés de juntar duas tabelas, foram juntadas uma classe (Serie, como se fosse a tabela series) com o atributo (episodios) que mapeia a associação entre as entidades dessa mesma classe. Então isso foi o grande diferencial, pois em SQL junta-se uma tabela com a outra e é referenciado a chave primária com a chave estrangeira da outra tabela, e é bem mais simples.
Então essa sintaxe em Java:
// SerieRepository.java
@Query("SELECT e FROM Serie s JOIN s.episodios e WHERE e.titulo ILIKE %:trechoEpisodio%")
// Principal
private void buscarEpisodioPorTrecho() {
System.out.println("Qual é o trecho do episódio?");
var trechoEpisodio = leitura.nextLine();
List<Episodio> episodiosEncontrados = repositorio.episodiosPorTrecho(trechoEpisodio);
episodiosEncontrados.forEach(e ->
System.out.printf("Série: %s, Temporada %s, Episódio %s - %s\n",
e.getSerie().getTitulo(), e.getTemporada(),
e.getNumeroEpisodio(), e.getTitulo()));
}
É igual a essa sintaxe em SQL:
SELECT s.titulo, e.temporada, e.numero_episodio, e.titulo
FROM series s
JOIN episodios e ON s.id = e.serie_id
WHERE e.titulo ILIKE '%woman%';
Espero ter ajudado quem ficou com a mesma dúvida.