Hibernate problemas ao cadastrar um registro

boa tarde pessoal td certo ?
estou tendo problemas em cadastrar um registro relacionando-o com outro, eu tenho um objeto telefone que tem um objeto operadora e um objeto pessoao erro que estou recendo é este:


org.hibernate.exception.GenericJDBCException: could not insert: [Classes.Telefone]  
    at org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:103)  
    at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:91)  
    at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43) 

ele esta acontecendo neste ponto do codigo :


Session sessaoTelefone = HibernateUtil.getSessionFactory().getCurrentSession();  
                Telefone telefoneProcessado = new Telefone();  
                telefoneProcessado.setPessoa(new Empresa());  
                try {   
                    sessaoTelefone.beginTransaction();  
                    sessaoTelefone.flush();  
                    sessaoTelefone.clear();  
                    if (operacao.equals("inclusão")){  
                    sessaoTelefone.save(preencherObjetoTelefone(telefoneProcessado,false)); //<---- erro ao passar aqui  
                    }else{  
                        sessaoTelefone.update(preencherObjetoTelefone(telefoneProcessado,true));  
                    }  
                    sessaoTelefone.getTransaction().commit();  
                } catch (Exception ex) {  
                    if (sessaoTelefone.getTransaction().isActive()){  
                        sessaoTelefone.getTransaction().rollback();  
                    }  
                    JOptionPane.showMessageDialog(null, ex.getMessage());  
                    ex.printStackTrace();  
                }finally{  
                    cancelarAcaoTelefone();  
                    if (confirma){  
                        JOptionPane.showMessageDialog(null, "Telefone " + resultadoOperacao + " com sucesso !");  
                    }  
                } 

as classes envolvidas são estas :

telefone:


package Classes;  
  
import javax.persistence.Column;  
import javax.persistence.Entity;  
import javax.persistence.FetchType;  
import javax.persistence.GeneratedValue;  
import javax.persistence.Id;  
import javax.persistence.JoinColumn;  
import javax.persistence.ManyToOne;  
import javax.persistence.Table;  
  
  
@Entity  
@Table(name="tel_telefones")  
public class Telefone {  
      
    @Id  
    @GeneratedValue  
    @Column(name="tel_codigo", length = 6)  
    private int codigo;  
      
    @Column(name="tel_numero",  nullable=false, length = 10)  
    private String numero;  
      
    @JoinColumn(name="ope_codigo",  nullable=false)  
    @ManyToOne(fetch = FetchType.LAZY)  
    private Operadora operadora;  
      
    @JoinColumn(name="pes_codigo",  nullable=false,insertable = false,updatable = false)  
    @ManyToOne(fetch = FetchType.LAZY)  
    private Pessoa pessoa;  
      
    public int getCodigo() {  
        return codigo;  
    }  
  
    public void setCodigo(int codigo) {  
        this.codigo = codigo;  
    }  
  
    public String getNumero() {  
        return numero;  
    }  
  
    public void setNumero(String numero) {  
        this.numero = numero;  
    }  
  
    public Operadora getOperadora() {  
        return operadora;  
    }  
  
    public void setOperadora(Operadora operadora) {  
        this.operadora = operadora;  
    }  
  
    public Pessoa getPessoa() {  
        return pessoa;  
    }  
  
    public void setPessoa(Pessoa pessoa) {  
        this.pessoa = pessoa;  
    }  
      
} 

operadora


package Classes;  
  
import javax.persistence.Column;  
import javax.persistence.Entity;  
import javax.persistence.GeneratedValue;  
import javax.persistence.Id;  
import javax.persistence.Table;  
  
@Entity  
@Table(name="ope_operadoras")  
public class Operadora {  
      
    @Id  
    @GeneratedValue  
    @Column(name="ope_codigo", unique = true, length = 6)  
    private int codigo;  
      
    @Column(name="ope_descricao",  nullable=false, length = 30)  
    private String descricao;  
  
    public int getCodigo() {  
        return codigo;  
    }  
  
    public void setCodigo(int codigo) {  
        this.codigo = codigo;  
    }  
  
    public String getDescricao() {  
        return descricao;  
    }  
  
    public void setDescricao(String descricao) {  
        this.descricao = descricao;  
    }  
      
    @Override  
    public String toString(){  
        return  this.descricao;  
    }  
      
} 

pessoa q no caso eh abstrata


/* 
 * To change this template, choose Tools | Templates 
 * and open the template in the editor. 
 */  
package Classes;  
  
import java.util.List;  
import javax.persistence.Column;  
import javax.persistence.DiscriminatorColumn;  
import javax.persistence.DiscriminatorType;  
import javax.persistence.DiscriminatorValue;  
import javax.persistence.Entity;  
import javax.persistence.FetchType;  
import javax.persistence.GeneratedValue;  
import javax.persistence.Id;  
import javax.persistence.Inheritance;  
import javax.persistence.InheritanceType;  
import javax.persistence.JoinColumn;  
import javax.persistence.OneToMany;  
import javax.persistence.Table;  
import org.hibernate.annotations.Cascade;  
import org.hibernate.annotations.CascadeType;  
  
  
@Entity  
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)  
@Table(name="pes_pessoas")  
@DiscriminatorColumn(name="pes_tipo", length=1, discriminatorType=DiscriminatorType.INTEGER)  
@DiscriminatorValue("0")  
public abstract class Pessoa {  
      
    @Id  
    @GeneratedValue  
    @Column(name="pes_codigo", length = 6)  
    private int codigo;  
      
    @Column(name="pes_nome",  nullable=false, length = 50)  
    private String nome;  
      
    @Column(name="pes_tipo",  nullable=false, length = 1, columnDefinition = "TINYINT(1)", insertable = false, updatable = false)  
    private int tipoPessoa;  
      
    @OneToMany(mappedBy = "pessoa", targetEntity = Telefone.class, fetch = FetchType.LAZY)  
    @Cascade(value=CascadeType.SAVE_UPDATE)  
    @JoinColumn(name="pes_codigo", insertable=true, updatable=true)  
    private List<Telefone> telefone;  
      
    public int getCodigo() {  
        return codigo;  
    }  
  
    public void setCodigo(int codigo) {  
        this.codigo = codigo;  
    }  
  
    public String getNome() {  
        return nome;  
    }  
  
    public void setNome(String nome) {  
        this.nome = nome;  
    }  
  
    public int getTipoPessoa() {  
        return tipoPessoa;  
    }  
  
    public void setTipoPessoa(int tipoPessoa) {  
        this.tipoPessoa = tipoPessoa;  
    }  
  
    public List<Telefone> getTelefone() {  
        return telefone;  
    }  
  
    public void setTelefone(List<Telefone> telefone) {  
        this.telefone = telefone;  
    }  
      
} 

e a classe que herda de pessoa, empresa:


package Classes;  
  
import java.util.List;  
import javax.persistence.DiscriminatorValue;  
import javax.persistence.Entity;  
import javax.persistence.FetchType;  
import javax.persistence.JoinColumn;  
import javax.persistence.OneToMany;  
import org.hibernate.annotations.Cascade;  
import org.hibernate.annotations.CascadeType;  
  
@Entity  
@DiscriminatorValue("2")  
public class Empresa extends Pessoa{  
      
    @OneToMany(mappedBy = "empresa", targetEntity = Cliente.class, fetch = FetchType.LAZY,cascade = javax.persistence.CascadeType.PERSIST )  
    @Cascade(value=CascadeType.SAVE_UPDATE)  
    @JoinColumn(name="pes_empresa", insertable=true, updatable=true)    
    private List<Cliente> cliente;  
  
    public List<Cliente> getCliente() {  
        return cliente;  
    }  
  
    public void setCliente(List<Cliente> cliente) {  
        this.cliente = cliente;  
    }  
      
} 

quem pude dah um help aew agradeço

pessoal eu chegei a pensar que pudesse ser um problema de cast no meu codigo quando eu crio uma instancia de empresa no telefone nessa linha :

telefoneProcessado.setPessoa(new Empresa());

mas fiz testes aqui jogando o resultado na tela e ele me trouxe os dados normalmente, o insert sem relacionamentos eu consegui realizar, porém to parado nesse insert com 2 relacionamentos, alguém por favor me da uma força

Read more: http://javafree.uol.com.br/topic-890046-Hibernate-problemas-ao-inserir.html#ixzz2QOmuRMjf

eskeci d posta esta parte do meu codigo, o metodo que preenche o meu objeto


private Telefone preencherObjetoTelefone(Telefone telefoneProcessado, boolean pegarCodgio){
        if (pegarCodgio){
            int codigo = Integer.parseInt(tblTelefone.getValueAt(tblTelefone.getSelectedRow(), 0).toString());
            telefoneProcessado.setCodigo(codigo);
        }
        telefoneProcessado.setNumero(ftxtTelefone.getValue().toString());
        telefoneProcessado.setOperadora((Operadora) cbxOperadora.getSelectedItem());
        telefoneProcessado.getPessoa().setCodigo(Integer.parseInt(tblEmpresa.getValueAt(tblEmpresa.getSelectedRow(),0).toString()));
        //telefoneProcessado.setPessoa(modeloEmpresa.get(tblEmpresa.getSelectedRow()));
        return telefoneProcessado;
    }