Duvida hibernate

5 respostas
pimentaft

Olá!
Tendo duas tabelas como exemplo:

Livro: codlivro,descricao e npagina
Autor:codautor,nome

Eu crio 2 classes java:

@Entity
public class Livro implements Seriarizable{
   @Column(name="codlivro")
   private String codLivro;
   @Column(name="descricao")
   private String descricao;
   @Column(name="npagina")
   private int npagina;
//gets e sets omitidos
}
public class Autor implements Seriarizable{
   @Column(name="codautor")
   private String codAutor;
   @Column(name="nome")
   private String nome;
//gets e sets omitidos
}

Minha dúvida é: Se eu quero fazer uma query assim:

select * from Livro l,Autor a;

no Hibernate:

session.createSQLQuery("select * from Livro l,Autor a")
.addEntity(???)
.list();

Eu tenho que criar uma nova classe com todos os atributos de livro e autor?
Se SIM, essa classe seria algo como:

@Entity
public class Livro_Autor implements Seriarizable{
   @Column(name="codlivro",table="livro")
   private String codLivro;
   @Column(name="descricao",table="livro")
   private String descricao;
   @Column(name="npagina",table="livro")
   private int npagina;
   @Column(name="codautor",table="autor")
   private String codAutor;
   @Column(name="nome",table="autor")
   private String nome;
//gets e sets omitidos

A query do hibernate ficaria assim???

session.createSQLQuery("select * from Livro l,Autor a")
.addEntity(Livro_Autor)
.list();

Alguem pode me ajudar???

5 Respostas

C

não precisa criar uma classe a mais, pense um pouco mais em orientação objeto
Todo livro tem um autor, então na classe livro vai ter um atributo Autor, sendo uma fk.
quando vc der um .list somente de livros, já vai trazer o autor junto :wink:
tidpo um :

select * from Livros l

no list vai vir somente os objetos livros com os atributos autores

skalinichenko

cabelograff:
não precisa criar uma classe a mais, pense um pouco mais em orientação objeto
Todo livro tem um autor, então na classe livro vai ter um atributo Autor, sendo uma fk.
quando vc der um .list somente de livros, já vai trazer o autor junto :wink:
tidpo um :

select * from Livros l

no list vai vir somente os objetos livros com os atributos autores

Verdade!
Já iria comentar a mesma coisa, sobre a FK na tabela Livros, que faz referência a um campo da tabela Autor. Além de pensar um pouco mais em OO, deveria pensar um pouco mais também, em Estrutura de Banco de Dados.
Flw!

pimentaft

Ok!
Obrigado por responderem.
Mas na verdade o que eu gostaria de saber é se eu precisando em uma única query todas essas informações, para assim eu montar um relatório.
Exemplo: quero que me mostre todos os [color=red]nomes[/color] de autores e as descricoes dos livros de cada um que contenham livros com mais de 100 paginas.

select a.nome,l.descricao from autor a, livro l where a.codautor = l.codautor and npagina > 100

Se eu for buscar somente na tabela livro apenas terei o codigo do autor.
Se eu estiver errado me ajudem, por favor.

Vlw!

pimentaft

E no banco eu esqueci de colocar que em livro tem o codigo de autor…

pimentaft

Alguem???

Criado 8 de janeiro de 2009
Ultima resposta 8 de jan. de 2009
Respostas 5
Participantes 3