Estou com dúvida nesse exercício porém acho que é mais uma dúvida referente ao hibernate. Quando tento renderizar os nomes dos autroes que eu gravei na tabela estou fazendo assim:
<h:dataTable value="#{livroBean.autoresDoLivro}" var="autor" id="tabelaAutores">
<h:column>
<h:outputText value="#{autor.nome}"/>
</h:column>
</h:dataTable>
Na minha classe LivroBean fiz assim:
public class LivroBean {
private List<Autor> autoresDoLivro = new ArrayList<Autor>();
public List<Autor> listaAutoresDoLivro(){
return new DAO<Autor>(Autor.class).listaAutoresDoLivro(4); //coloquei 4 para ver se a query tava funcionando
}
public List<Autor> getAutoresDoLivro() {
return this.listaAutoresDoLivro();
}
public void setAutoresDoLivro(List<Autor> autoresDoLivro) {
this.autoresDoLivro = autoresDoLivro;
}
}
E na minha classe DAO fiz assim:
public class DAO{
public List<Autor> listaAutoresDoLivro(int livroId){
EntityManager em = new JPAUtil().getEntityManager();
TypedQuery<Autor> query = em.createQuery("select a.nome from autor a "
+ "inner join livro_autor la "
+ "on la.AUTORES_ID = a.ID "
+ "where la.LIVRO_ID =" + livroId, Autor.class);
List<Autor> autores = query.getResultList();
return autores;
}
}
Eu testei essa query no oracle e funciona direitinho, porém eu sei que no hibernate as querys não se escrevem exatamente como no sql puro. O problema é que não sei como faço para essa query funcionar no hibernate. Como faço o join no hibernate? Alguém pode me dar uma dica? Obrigada.