segue meu main()
[code]package br.com.testes;
import java.io.IOException;
import java.text.ParseException;
import java.util.List;
import java.util.Scanner;
import java.util.Set;
import javax.persistence.Query;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import br.com.bean.Autor;
import br.com.bean.Livro;
public class Testes {
/**
* @param args
* @throws ParseException
* @throws IOException
*/
public static void main(String[] args) throws ParseException, IOException {
EntityManagerFactory fac = Persistence.createEntityManagerFactory("MeuBanco");
EntityManager manager = fac.createEntityManager();
manager.getTransaction().begin();
Query query = manager.createQuery("SELECT l.nome, l.autores FROM Livro l");
List<Object[]> livros = query.getResultList();
for (Object[] livro : livros) {
System.out.println("Livro: "+ livro[0] +" Autor(es): " + livro[1]);
}
manager.getTransaction().commit();
manager.close();
fac.close();
}
}[/code]
minha classe Livro
package br.com.bean;
import java.util.HashSet;
import java.util.Set;
import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.NamedQuery;
@Entity
@NamedQuery(name = "findByNome", query = "select l from Livro l where l.nome = ?1")
public class Livro {
@Id @GeneratedValue
private Long id;
private String nome;
@ManyToMany(cascade=CascadeType.PERSIST)
@JoinTable(name="autor_livro", joinColumns=@JoinColumn(name="livro_id"), inverseJoinColumns=@JoinColumn(name="autor_id"))
private Set<Autor> autores;
public Livro() {
this.autores = new HashSet<Autor>();
}
public Set<Autor> getAutores(){
return this.autores;
}
public void add(Autor autor) {
autores.add(autor);
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
@Override
public String toString() {
// TODO Auto-generated method stub
return this.nome;
}
}
olhem o codigo que ta sendo gerado:
a linha com o “<<–” esta apontando a linha errada… o que sera que ta dando? :shock:
select
livro0_.nome as col_0_0_,
. as col_1_0_, <<--
autor2_.id as id8_,
autor2_.nome as nome8_
from
Livro livro0_
inner join
autor_livro autores1_
on livro0_.id=autores1_.livro_id
inner join
Autor autor2_
on autores1_.autor_id=autor2_.id