Boa noite,
Surgiu uma duvida que nunca vi em um livro de JPA, tenho duas classes uma de Livros e outra de Comentarios, estou fazendo uma consulta no banco que me traga os comentarios relacionados aquela id do livro como o exemplo abaixo:
select mensage, livro.titulo from comentario join livro where livro.id =1;
No meu banco funciona normalmente mas no JPQL não funciona
    TypedQuery<Comentario> query = em.createQuery(
                "Select u FROM Comentario u join u.livro c WHERE c.id = :pId", Comentario.class);
        query.setParameter("pId", livro.getId());
        List<Comentario> comentario = query.getResultList();
Está é minha classe do livro ela é 1 ... * OneToMany
package br.com.caelum.livraria.modelo;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.ManyToMany;
import javax.persistence.OneToMany;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import org.hibernate.annotations.Fetch;
import org.hibernate.annotations.FetchMode;
@Entity
public class Livro implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue
    private Integer id;
    private String titulo;
    private String isbn;
    private double preco;
    @Temporal(TemporalType.DATE)
    private Calendar dataLancamento = Calendar.getInstance();
    private Integer avaliacao;
    public Integer getAvaliacao() {
        return avaliacao;
    }
    public void setAvaliacao(Integer avaliacao) {
        this.avaliacao = avaliacao;
    }
    @ManyToMany(fetch = FetchType.EAGER)
    private List<Autor> autores = new ArrayList<Autor>();
    @OneToMany(fetch = FetchType.EAGER)
    @Fetch(FetchMode.SUBSELECT)
    private List<Comentario> comentarios = new ArrayList<Comentario>();
E a classe comentario eu usei um JoinColumn com a chave estrangeira da outra classe mas mesmo assim minha consulta não retorna nenhum dado no jpql
@Entity
public class Comentario {
    @Id
    @GeneratedValue
    private Integer id;
    private String mensagem;
    private String autorDoComentario;
    @Temporal(TemporalType.DATE)
    private Calendar dataLancamento = Calendar.getInstance();
    @ManyToOne
    @JoinColumn(name = "comentarios_id")
    private Livro livro;
Desde já obrigado pela ajuda de todos.