Relacionamento com Hibernate

7 respostas
J

Boa tarde galera, estou desenvolvendo uma aplicação com JSF e Hibernate 3, tenho tres objetos diferentes que se relacionam da seguinte maneira:
Objetos :
Aula,
Imagem,
Som

Aula tem varias imagens,
cada Imagem tem um Som
Dentro da tabela imagem tem o id_aula e dentro e dentro da tebela Som tem id_imagem.

Este relacionamento esta funcionando quando dou o select, mas minha duvida é, como gravar o id de aula em imagem e id de imagem em aula na hora de persistir?
Valeu pela atenção pessoal, aguardo por ajuda…

7 Respostas

tmvolpato

cole os códigos aonde contem seus relacionamentos
assim fica melhor para te ajuda

J

Estas são minhas entidades :

package model;

import java.io.Serializable;
import java.util.List;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Transient;

@Table(name = "e_aula")
@Entity
public class Aula implements Serializable {

    /**
     * Valter Gomes da Silva Junior
     */
    private static final long serialVersionUID = 1L;
    @Id
    @PrimaryKeyJoinColumn 
    @Column(name = "ide_aula")
    private int id;
    @Column(name = "nome")
    private String nome;
    @Column(name = "serie")
    private String serie;
    @Column(name = "url")
    String url;
    //FK's
    @JoinColumn(name="aula_id" , referencedColumnName="ide_aula")
    @OneToMany
    private List<Imagem> imagem;

   // getters e setters
@Table(name = "e_imagem")
@Entity
public class Imagem implements Serializable {

	/**
	 * Valter Gomes da Silva Junior
	 */
	private static final long serialVersionUID = 1L;

	@Id
	@GeneratedValue
        @PrimaryKeyJoinColumn
	@Column(name = "ide_imagem")
	private int id;

	@Column(name = "nome")
	private String nome;

	@Column(name = "url")
	private String url;

        
	@JoinColumn(name="ide_imagem" , referencedColumnName="imagem_id")
        @OneToOne
	private Som som;

	@Column(name = "aula_id")
	private int aula_id;
        
     // getters e setters
@Entity
@Table(name = "e_som")
public class Som implements Serializable {

    /**
     * Valter Gomes da Silva Junior
     */
    private static final long serialVersionUID = 1L;
    @Id
    @Column(name = "ide_som")
    private int id;
    @Column(name = "nome")
    private String nome;
    @Column(name = "url")
    private String url;
    //FK's
    @Column(name = "imagem_id")
    private int imagem_id;
  // getters e setters
Z

Fala junior,

Agora que você já mapeou o Model, você não pode simplesmente add uma Lista de Imagens dentro de Aula e mandar um persist?
Acho que o Hibernate já faz o trablho de criar a query que irá persistir o pai e os filhos.
Não sei também se você já resolveu o problema …

abss

J

Bom Dia Zabimaru, ainda não resolvi não, sera que com este relacionamento ja feito, o proprio hibernate vai entender que tenq colocar o id na minha FK, vc sabe como funciona isso no hibernate?

Z

Fala Junior …

Cara eu to meio enferrujado no Hibernate, mas acredito, que quando você manda persistir a Aula ele já reconhece os filhos dentro da mesma, então manda persistir o pai primeiro, pega o Id desse cara e faz o insert nos filhos com o ID do pai que ele acabou de persistir.
Dei uma caçada no google e achei uma situação de um cara parecida com a sua :

Na resposta que ele marcou como ok, a pessoa que respondeu falou que ao persistir o pai ele já persisti tudo … tem uma configuração no config que você pode colocar um query. show = true, dá uma olhada, coloca true qe vai aparecer a query que ele faz.

abss

J

Cara valeu msm pela ajuda, vou fazer os testes seguindo esta linha e posto aqui os resultados.
Obrigado pela força

Z

fala junior,

Opa tamos ai … só não deixa de colocar um Resolvido e qual foi a solução do problema quando estiver tudo ok … assim aprendemos juntos :wink:

abss

Criado 4 de setembro de 2012
Ultima resposta 5 de set. de 2012
Respostas 7
Participantes 3