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