Problemas na inserção de dados - hibernate

1 resposta
R

Oi pessoal, estou aprendendo hibernate agora, e uso Postgres. Fiz um mapeamento OneToManY, onde um Dono pode ter varios Cachorros.
Fiz as classes InserirDono e InserirCachorro, mas apenas a primeira funciona, a segunda da erro.
Ao inserir cachorro, preciso identificar qual será o dono, certo? como faço isso????

package dono.bean;
import cachorro.bean.CachorroBean;
import java.io.Serializable;
import java.util.Collection;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.OneToMany;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;

@Entity
@Table (name="dono")  
public class DonoBean implements Serializable {
    
    @Id
    @Column(name="cod")
    @SequenceGenerator(name = "seq_dono", sequenceName = "dono_cod_seq")
    @GeneratedValue( generator = "seq_dono")
    private Integer cod;
    
    @OneToMany(mappedBy = "donoBean")
    @JoinTable(name="dono_cachorro",
    joinColumns=@JoinColumn(name="cod"),
    inverseJoinColumns=@JoinColumn(name="codigo"))
    private Collection<CachorroBean> cachorro;
    
    @Column(name="nome")
    private String nome;
    
    @Column(name="tel")
    private String tel;    
//overrides e metodos get set
package cachorro.bean;
import dono.bean.DonoBean;
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;

@Entity
@Table (name="cachorro")       

public class CachorroBean implements Serializable{
    @ManyToOne
    private DonoBean donoBean;
        
    @Id
    @Column(name="codigo")
    @SequenceGenerator(name = "seq_cachorro", sequenceName = "cachorro_codigo_seq")
    @GeneratedValue(generator = "seq_cachorro")
    private Integer codigo;
    
    @Column(name="nome")
    private String nome;
    
    @Column(name="raca")
    private String raca;
import dono.bean.DonoBean;
import dono.dao.DonoDao;
import dono.dao.DonoDaoImpl;
import java.security.Principal;
import java.util.logging.Level;
import java.util.logging.Logger;
import util.DaoException;

public class InserirDono {
    
    public static void main (String[] args){
        
        DonoBean d1 = new DonoBean();
        d1.setNome("Rafaela");
        d1.setTel("9121-0000");
       
        DonoDao dd = new DonoDaoImpl();
        
        try {
           dd.inserir(d1);
            } catch (DaoException ex) {
            Logger.getLogger(Principal.class.getName()).log(Level.SEVERE, null, ex);
        }            
    }      
}
import cachorro.bean.CachorroBean;
import cachorro.dao.CachorroDao;
import cachorro.dao.CachorroDaoImpl;
import java.security.Principal;
import java.util.logging.Level;
import java.util.logging.Logger;
import util.DaoException;

public class InserirCachorro {
    public static void main (String[] args){
                
        CachorroBean cb = new CachorroBean();
        cb.setNome("Polly");
        cb.setRaca("Poodle");    
        
        CachorroDao cd = new CachorroDaoImpl();
        try {
            CachorroBean inserir = cd.inserir(cb);
       
            } catch (DaoException ex) {
            Logger.getLogger(Principal.class.getName()).log(Level.SEVERE, null, ex);
        }      
        System.out.println("inserido");
    }    
}

Aguardo a ajuda de vcs!

1 Resposta

J

Primeiro, coloque o erro que está dando, que dai será possível ajudar, apenas escrevendo está com erro fica complicado.
Em relação ao sua entidade cachorro saber qual é o dono, você vai precisar do relacionamento bi-direcional, como o dono tem um One-To-Many para cachorro, cachorro precisa ter um Many-To-One para dono, dai a partir do cachorro você consegue descobrir qual é o seu dono.

Criado 29 de outubro de 2011
Ultima resposta 30 de out. de 2011
Respostas 1
Participantes 2