Como recuperar os dados da 3 tabelas da Hibernate

11 respostas
jsnpereira

Olá, pessoal! como recuperar os dados da hibernate, como ManyToOne, ManyToMany,OnToMany. mas assim quantidade dados irão recuperar… por exemplos vai inserir os dados entre 2 tabelas, por exemplo uma tabela livro vai inserir um dados e outra tabela autor vai inserir 3 dados… mas recuperar tabela de livro apenas um como vai chamar os 3 autor.

estou treinando com o O.O. veja a imagem

postei as 3 tabelas.

Autor

@Entity
public class Autor {
	@Id
	@GeneratedValue(strategy=GenerationType.IDENTITY)
	@Column(name="id_autor")
	private int idAutor;
	@Column(length=35,nullable=false,insertable=true,updatable=true)
	private String nome;
	@Column(unique=true,nullable=false,insertable=true,updatable=true)
	private String email;
	@Column(length=40,nullable=false,insertable=true,updatable=true)
	private String endereco;
	@ManyToMany(mappedBy="autor",fetch=FetchType.LAZY)
	@Cascade(CascadeType.ALL)
	private List<Artigo> artigo;

Artigo

public class Artigo {
	@Id
	@GeneratedValue(strategy=GenerationType.IDENTITY)
	@Column(name="id_artigo")
	private int idArtigo;
	@Column(length=40,nullable=true,insertable=true,updatable=false)
	private String titulo;
	@Column(length=100,nullable=true,insertable=true,updatable=false)
	private String resumo;
	@ManyToOne
	private RevistaCientifica revista;
	@ManyToMany
	private List<Autor> autor;

Revista Cientifica

@Entity
public class RevistaCientifica {
	@Id
	@GeneratedValue(strategy=GenerationType.IDENTITY)
	@Column(name="id_revista")
	private int idRevista;
	@Column(unique=true,insertable=true,updatable=false,nullable=true)
	private long issn;
	@Column(length=20,nullable=true,insertable=true,updatable=false)
	private String titulo;
	@Column(length=20,nullable=true,insertable=true,updatable=false)
	private String periocidade;
	@OneToMany(mappedBy="revista",fetch=FetchType.LAZY)
	@Cascade(CascadeType.ALL)
	private List<Artigo> artigo;

E ai, tudo esse foram sucesso para inserir os dados no banco de dado… só pequena detalhe ficando sabendo como recuperar tudo mesmo uma vez só para mostrar na lista?

Espero que me ajude a explicar… obrigado!!

11 Respostas

luxu

List, ArrayList, HashMap escolha qualquer um e pronto, se o relacionamento estiver certo vai estar em cada linha:

Autor 1 Livro 1
Autor 1 Livro 2
Autor 1 Livro 3

saka?

jsnpereira

luxu:
List, ArrayList, HashMap escolha qualquer um e pronto, se o relacionamento estiver certo vai estar em cada linha:

Autor 1 Livro 1
Autor 1 Livro 2
Autor 1 Livro 3

saka?

O que é HashMap? como programar esse? nunca estudei antes…

luxu

http://www.guj.com.br/articles/186

tiago.vt

olhei rapidamente e vi que você anoto Lazy, use o

jsnpereira

tiago.vt:
olhei rapidamente e vi que você anoto Lazy, use o

Já alterei e testamos aparecendo a lista de repetido por usuário… veja ai…

Servlet para recuperar os dados…

@SuppressWarnings("unchecked")
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		SessionFactory sf = (new AnnotationConfiguration().configure("/cfg/hibernate.cfg.xml")
			.buildSessionFactory());
		Session sessao = sf.openSession();
		
		Criteria c = sessao.createCriteria(Autor.class);
		
		ArrayList<Autor> lista = (ArrayList<Autor>) c.list();
		
		System.out.println(lista.size());
		
		for(Autor aut : lista){
			System.out.println("");
			System.out.println("------------------");
			System.out.println("Id autor: "+aut.getIdAutor());
			System.out.println("Nome: "+aut.getNome());
			System.out.println("E-mail: "+aut.getEmail());
			System.out.println("Artigo titulo: "+aut.getArtigo().get(0).getTitulo());
			System.out.println("Artigo resumo: "+aut.getArtigo().get(0).getResumo());
			System.out.println("Revista titulo: "+aut.getArtigo().get(0).getRevista().getTitulo());
			System.out.println("Revista periocidade: "+aut.getArtigo().get(0).getRevista().getPeriocidade());
			
		}
	}

o resultado como fica

------------------
Id autor: 1
Nome: Jeison da Silva Pereira
E-mail: [email removido]
Artigo titulo: Em buscar do sonho
Artigo resumo: Ser mais importante pelo sonho do futuro que voces tem plano do futuro
Revista titulo: caça do Futuro
Revista periocidade: Abril/Maio

------------------
Id autor: 2
Nome: Carina Rosario
E-mail: [email removido]
Artigo titulo: Em buscar do sonho
Artigo resumo: Ser mais importante pelo sonho do futuro que voces tem plano do futuro
Revista titulo: caça do Futuro
Revista periocidade: Abril/Maio

------------------
Id autor: 2
Nome: Carina Rosario
E-mail: [email removido]
Artigo titulo: Em buscar do sonho
Artigo resumo: Ser mais importante pelo sonho do futuro que voces tem plano do futuro
Revista titulo: caça do Futuro
Revista periocidade: Abril/Maio

------------------
Id autor: 3
Nome: Keli Texeira
E-mail: [email removido]
Artigo titulo: Em buscar do sonho
Artigo resumo: Ser mais importante pelo sonho do futuro que voces tem plano do futuro
Revista titulo: caça do Futuro
Revista periocidade: Abril/Maio

------------------
Id autor: 3
Nome: Keli Texeira
E-mail: [email removido]
Artigo titulo: Em buscar do sonho
Artigo resumo: Ser mais importante pelo sonho do futuro que voces tem plano do futuro
Revista titulo: caça do Futuro
Revista periocidade: Abril/Maio

Entendeu? tem diferente armazenamento, mas pareceu alguns nomes dois repetido iguais…
foram os dados na classes em banco de dados.
1 Revista Científica
3 artigo
3 autores para 1 artigo.

acho tem alguma detalhe configurar para recuperar tudo os dados…

tiago.vt

fez overhide do metodo equals e hashcode nas entidades?

Kanin_Dragon

Jovem,
Creio que a sua maior dúvida é em utilizar a ferramenta e é bacana dar uma olha na documentação do hibernate
http://docs.jboss.org/hibernate/core/3.3/reference/en/html/queryhql.html assim terá basamento suficiente para utilizar a ferramenta.

Achei a sua dúvida muito vaga e fica dificil para a galera do forum te ajudar.

abs,

jsnpereira

Ah! esse que nunca fiz, tem alguma tutorial sobre esse assunto me passa para eu estudar… obrigado!

tiago.vt

Ah! esse que nunca fiz, tem alguma tutorial sobre esse assunto me passa para eu estudar… obrigado!

clica com o botao direito dentro da codigo fonte da classe, dae vai em source dae tem as opçoes generate hashcode…

marque so o atributo que vc usa de chave primaria.

jsnpereira

Kanin Dragon:
Jovem,
Creio que a sua maior dúvida é em utilizar a ferramenta e é bacana dar uma olha na documentação do hibernate
http://docs.jboss.org/hibernate/core/3.3/reference/en/html/queryhql.html assim terá basamento suficiente para utilizar a ferramenta.

Achei a sua dúvida muito vaga e fica dificil para a galera do forum te ajudar.

abs,

Muito obrigado! vou pesquisar no site…

Ah! no momento estou em folga aproveitar estudando bastante para tira as dúvidas… porque dia todo para estuda. valeu!

jsnpereira

Ah! esse que nunca fiz, tem alguma tutorial sobre esse assunto me passa para eu estudar… obrigado!

clica com o botao direito dentro da codigo fonte da classe, dae vai em source dae tem as opçoes generate hashcode…

marque so o atributo que vc usa de chave primaria.

Já encontrei e cliquei apareceu tudo os classes no ID… mas o que funciona essa equals e Hashcode? como faz programar entre ambos. Obrigado!

Criado 28 de abril de 2011
Ultima resposta 29 de abr. de 2011
Respostas 11
Participantes 4