GARANTIR DESCONTO

Fórum Primary foreign key (PFK) em JPA #380070

24/06/2010

0



A dúvida é a seguinte: Tenho uma tabela pessoa e uma tabela farmacêutico. Na tabela pessoa o cod_pessoa é auto increment e primary key (PK) e esse mesmo cod_pessoa é Primary foreign key (PFK) em farmacêutico. Quando gero as Entitys pelo netbeans ele não consegue tratar desta forma este relacionamento OneToOne, como tratar essa situação?
 

//Entidade Pessoapackage bean;
import java.io.Serializable;import javax.persistence.Basic;import javax.persistence.CascadeType;import javax.persistence.Column;import javax.persistence.Entity;import javax.persistence.Id;import javax.persistence.NamedQueries;import javax.persistence.NamedQuery;import javax.persistence.OneToOne;import javax.persistence.Table;
/** * * @author Rogério */@Entity@Table(name = "pessoa", catalog = "jpapkfk", schema = "public")@NamedQueries({    @NamedQuery(name = "Pessoa.findAll", query = "SELECT p FROM Pessoa p")})public class Pessoa implements Serializable {    private static final long serialVersionUID = 1L;    @Id    @GeneratedValue(strategy=GenerationType.IDENTITY)    @Basic(optional = false)    @Column(name = "pes_codigo", nullable = false)    private Long pesCodigo;    @Basic(optional = false)    @Column(name = "pes_nome", nullable = false, length = 2147483647)    private String pesNome;    @OneToOne(cascade = CascadeType.ALL, mappedBy = "pessoa")    private Farmaceutico farmaceutico;
    public Pessoa() {    }
    public Pessoa(Long pesCodigo) {        this.pesCodigo = pesCodigo;    }
    public Pessoa(Long pesCodigo, String pesNome) {        this.pesCodigo = pesCodigo;        this.pesNome = pesNome;    }
    public Long getPesCodigo() {        return pesCodigo;    }
    public void setPesCodigo(Long pesCodigo) {        this.pesCodigo = pesCodigo;    }
    public String getPesNome() {        return pesNome;    }
    public void setPesNome(String pesNome) {        this.pesNome = pesNome;    }
    public Farmaceutico getFarmaceutico() {        return farmaceutico;    }
    public void setFarmaceutico(Farmaceutico farmaceutico) {        this.farmaceutico = farmaceutico;    }
    @Override    public int hashCode() {        int hash = 0;        hash += (pesCodigo != null ? pesCodigo.hashCode() : 0);        return hash;    }
    @Override    public boolean equals(Object object) {        // TODO: Warning - this method won't work in the case the id fields are not set        if (!(object instanceof Pessoa)) {            return false;        }        Pessoa other = (Pessoa) object;        if ((this.pesCodigo == null && other.pesCodigo != null) || (this.pesCodigo != null && !this.pesCodigo.equals(other.pesCodigo))) {            return false;        }        return true;    }
    @Override    public String toString() {        return "bean.Pessoa[pesCodigo=" + pesCodigo + "]";    }
}
//Entidade Farmacêuticopackage bean;
import java.io.Serializable;import javax.persistence.Basic;import javax.persistence.Column;import javax.persistence.Entity;import javax.persistence.Id;import javax.persistence.JoinColumn;import javax.persistence.NamedQueries;import javax.persistence.NamedQuery;import javax.persistence.OneToOne;import javax.persistence.Table;
/** * * @author Rogério */@Entity@Table(name = "farmaceutico", catalog = "jpapkfk", schema = "public")@NamedQueries({    @NamedQuery(name = "Farmaceutico.findAll", query = "SELECT f FROM Farmaceutico f")})public class Farmaceutico implements Serializable {    private static final long serialVersionUID = 1L;    @Id    @Basic(optional = false)    @Column(name = "pes_codigo", nullable = false)    private Long pesCodigo;    @Basic(optional = false)    @Column(name = "farmo_cro", nullable = false, length = 2147483647)    private String farmoCro;    @JoinColumn(name = "pes_codigo", referencedColumnName = "pes_codigo", nullable = false, insertable = false, updatable = false)    @OneToOne(optional = false)    private Pessoa pessoa;
    public Farmaceutico() {    }
    public Farmaceutico(Long pesCodigo) {        this.pesCodigo = pesCodigo;    }
    public Farmaceutico(Long pesCodigo, String farmoCro) {        this.pesCodigo = pesCodigo;        this.farmoCro = farmoCro;    }
    public Long getPesCodigo() {        return pesCodigo;    }
    public void setPesCodigo(Long pesCodigo) {        this.pesCodigo = pesCodigo;    }
    public String getFarmoCro() {        return farmoCro;    }
    public void setFarmoCro(String farmoCro) {        this.farmoCro = farmoCro;    }
    public Pessoa getPessoa() {        return pessoa;    }
    public void setPessoa(Pessoa pessoa) {        this.pessoa = pessoa;    }
    @Override    public int hashCode() {        int hash = 0;        hash += (pesCodigo != null ? pesCodigo.hashCode() : 0);        return hash;    }
    @Override    public boolean equals(Object object) {        // TODO: Warning - this method won't work in the case the id fields are not set        if (!(object instanceof Farmaceutico)) {            return false;        }        Farmaceutico other = (Farmaceutico) object;        if ((this.pesCodigo == null && other.pesCodigo != null) || (this.pesCodigo != null && !this.pesCodigo.equals(other.pesCodigo))) {            return false;        }        return true;    }
    @Override    public String toString() {        return "bean.Farmaceutico[pesCodigo=" + pesCodigo + "]";    }
}
    //Método teste    public void salvar() {        em = null;        try {            em = Conexao.getConexao();            pessoa = new Pessoa();            pessoa.setPesNome("Domeneck");            farmaceutico.setFarmoCro("000002");            //Inicia trasação            em.getTransaction().begin();            pessoa = em.merge(pessoa);            farmaceutico.setPessoa(pessoa);            em.merge(farmaceutico);            //Finaliza transação            em.getTransaction().commit();            JOptionPane.showMessageDialog(null, "Salvo!", "mensagem", JOptionPane.INFORMATION_MESSAGE);        } catch (Exception ex) {            //Rollback transação            em.getTransaction().rollback();            Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);        }    }
O netbeans me gerou as entidades exatamente desta forma, mais assim eu não consigo trabalhar com a PFK como eu resolveria este problema?

Rogério Martins

Rogério Martins

Responder

Posts

01/07/2010

Dyego Carmo

Um relacionamento OneToOne é uma coisa complicada...

Primeiro que eu não recomendaria isto a voce... eu faria algo ao estilo "Heranca de tabelas" no lugar deste OneToOne...

Vai facilitar bastante a sua vida...

Se tiver duvidas , tem um curso chamado "Desvendando o JPA" onde eu ensino como trabalhar com heranca de tabelas.

Responder

Gostei + 0

03/07/2010

Andrei Hirata


  Olá amigo.Vou te ajudar.....No seu caso é melhor usar heranca..Se vc quizer usar One to one vai ter umas particularidades a mais.
vou te passar um exemplo simples de heranca , caso vc tenha duvida..basta perguntar
Vou te mandar a classe PESSOA que tem todos dados semelhantes para fUNCIONARIOS,fornecedores e clientes

package br.com.sistemaagropecuaria.entity;
import java.io.Serializable;import java.util.Collection;import java.util.Date;import javax.persistence.Basic;import javax.persistence.CascadeType;import javax.persistence.Column;import javax.persistence.DiscriminatorColumn;import javax.persistence.DiscriminatorType;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.GenerationType;import javax.persistence.Id;import javax.persistence.Inheritance;import javax.persistence.InheritanceType;import javax.persistence.JoinColumn;import javax.persistence.JoinTable;import javax.persistence.ManyToMany;import javax.persistence.NamedQueries;import javax.persistence.NamedQuery;import javax.persistence.OneToMany;import javax.persistence.OneToOne;import javax.persistence.Table;import javax.persistence.Temporal;import javax.persistence.TemporalType;
@Entity@Table(name = "pessoas")@NamedQueries({@NamedQuery(name = "Pessoas.findAll", query = "SELECT p FROM Pessoas p"), @NamedQuery(name = "Pessoas.findByIdPessoas", query = "SELECT p FROM Pessoas p WHERE p.idPessoas = :idPessoas"), @NamedQuery(name = "Pessoas.findByNome", query = "SELECT p FROM Pessoas p WHERE p.nome = :nome"), @NamedQuery(name = "Pessoas.findByTipo", query = "SELECT p FROM Pessoas p WHERE p.tipo = :tipo"), @NamedQuery(name = "Pessoas.findByPapel", query = "SELECT p FROM Pessoas p WHERE p.papel = :papel"), @NamedQuery(name = "Pessoas.findByCnpj", query = "SELECT p FROM Pessoas p WHERE p.cnpj = :cnpj"), @NamedQuery(name = "Pessoas.findByInscricaoEstadual", query = "SELECT p FROM Pessoas p WHERE p.inscricaoEstadual = :inscricaoEstadual"), @NamedQuery(name = "Pessoas.findByRazaoSocial", query = "SELECT p FROM Pessoas p WHERE p.razaoSocial = :razaoSocial"), @NamedQuery(name = "Pessoas.findByRg", query = "SELECT p FROM Pessoas p WHERE p.rg = :rg"), @NamedQuery(name = "Pessoas.findByCpf", query = "SELECT p FROM Pessoas p WHERE p.cpf = :cpf"), @NamedQuery(name = "Pessoas.findByDataNascimento", query = "SELECT p FROM Pessoas p WHERE p.dataNascimento = :dataNascimento"), @NamedQuery(name = "Pessoas.findBySexo", query = "SELECT p FROM Pessoas p WHERE p.sexo = :sexo")})@Inheritance(strategy = InheritanceType.JOINED)@DiscriminatorColumn(name = "Papel", discriminatorType = DiscriminatorType.STRING)public class Pessoas implements Serializable {  private static final long serialVersionUID = 1L;  @Id  @GeneratedValue(strategy = GenerationType.IDENTITY)  @Basic(optional = false)  @Column(name = "idPessoas")  private Integer idPessoas;  @Basic(optional = false)  @Column(name = "Nome")  private String nome;  @Basic(optional = false)  @Column(name = "Tipo")  private String tipo;  @Basic(optional = false)  @Column(name = "Papel")  private String papel;  @Column(name = "Cnpj")  private String cnpj;  @Column(name = "InscricaoEstadual")  private String inscricaoEstadual;  @Column(name = "RazaoSocial")  private String razaoSocial;  @Column(name = "Rg")  private String rg;  @Column(name = "Cpf")  private String cpf;  @Column(name = "Data_Nascimento")  @Temporal(TemporalType.DATE)  private Date dataNascimento;  @Column(name = "Sexo")  private String sexo;  @JoinTable(name = "pes_fotos", joinColumns = {@JoinColumn(name = "idPessoas", referencedColumnName = "idPessoas")}, inverseJoinColumns = {@JoinColumn(name = "idFotos", referencedColumnName = "idFotos")})  @ManyToMany  private Collection<Fotos> fotosCollection;  @ManyToMany(mappedBy = "pessoasCollection")  private Collection<SysFiliais> sysFiliaisCollection;  @OneToOne(cascade = CascadeType.ALL, mappedBy = "pessoas")  private PesUsuarios pesUsuarios;  @OneToMany(cascade = CascadeType.ALL, mappedBy = "pessoas")  private Collection<PesMeioContatos> pesMeioContatosCollection;  @OneToMany(cascade = CascadeType.ALL, mappedBy = "pessoas")  private Collection<PesEnderecos> pesEnderecosCollection;
  public Pessoas() {  }
  public Pessoas(Integer idPessoas) {    this.idPessoas = idPessoas;  }
  public Pessoas(Integer idPessoas, String nome, String tipo, String papel) {    this.idPessoas = idPessoas;    this.nome = nome;    this.tipo = tipo;    this.papel = papel;  }
  public Integer getIdPessoas() {    return idPessoas;  }
  public void setIdPessoas(Integer idPessoas) {    this.idPessoas = idPessoas;  }
  public String getNome() {    return nome;  }
  public void setNome(String nome) {    this.nome = nome;  }
  public String getTipo() {    return tipo;  }
  public void setTipo(String tipo) {    this.tipo = tipo;  }
  public String getPapel() {    return papel;  }
  public void setPapel(String papel) {    this.papel = papel;  }
  public String getCnpj() {    return cnpj;  }
  public void setCnpj(String cnpj) {    this.cnpj = cnpj;  }
  public String getInscricaoEstadual() {    return inscricaoEstadual;  }
  public void setInscricaoEstadual(String inscricaoEstadual) {    this.inscricaoEstadual = inscricaoEstadual;  }
  public String getRazaoSocial() {    return razaoSocial;  }
  public void setRazaoSocial(String razaoSocial) {    this.razaoSocial = razaoSocial;  }
  public String getRg() {    return rg;  }
  public void setRg(String rg) {    this.rg = rg;  }
  public String getCpf() {    return cpf;  }
  public void setCpf(String cpf) {    this.cpf = cpf;  }
  public Date getDataNascimento() {    return dataNascimento;  }
  public void setDataNascimento(Date dataNascimento) {    this.dataNascimento = dataNascimento;  }
  public String getSexo() {    return sexo;  }
  public void setSexo(String sexo) {    this.sexo = sexo;  }
  public Collection<Fotos> getFotosCollection() {    return fotosCollection;  }
  public void setFotosCollection(Collection<Fotos> fotosCollection) {    this.fotosCollection = fotosCollection;  }
  public Collection<SysFiliais> getSysFiliaisCollection() {    return sysFiliaisCollection;  }
  public void setSysFiliaisCollection(Collection<SysFiliais> sysFiliaisCollection) {    this.sysFiliaisCollection = sysFiliaisCollection;  }


  public PesUsuarios getPesUsuarios() {    return pesUsuarios;  }
  public void setPesUsuarios(PesUsuarios pesUsuarios) {    this.pesUsuarios = pesUsuarios;  }
  public Collection<PesMeioContatos> getPesMeioContatosCollection() {    return pesMeioContatosCollection;  }
  public void setPesMeioContatosCollection(Collection<PesMeioContatos> pesMeioContatosCollection) {    this.pesMeioContatosCollection = pesMeioContatosCollection;  }
  public Collection<PesEnderecos> getPesEnderecosCollection() {    return pesEnderecosCollection;  }
  public void setPesEnderecosCollection(Collection<PesEnderecos> pesEnderecosCollection) {    this.pesEnderecosCollection = pesEnderecosCollection;  }
  @Override  public int hashCode() {    int hash = 0;    hash += (idPessoas != null ? idPessoas.hashCode() : 0);    return hash;  }
  @Override  public boolean equals(Object object) {    // TODO: Warning - this method won't work in the case the id fields are not set    if (!(object instanceof Pessoas)) {      return false;    }    Pessoas other = (Pessoas) object;    if ((this.idPessoas == null && other.idPessoas != null) || (this.idPessoas != null && !this.idPessoas.equals(other.idPessoas))) {      return false;    }    return true;  }
  @Override  public String toString() {    return "br.com.sistemaagropecuaria.entity.Pessoas[idPessoas=" + idPessoas + "]";  }
}

AGORA VOU MANDAR A CLASSE CLIENTE
/* * To change this template, choose Tools | Templates * and open the template in the editor. */
package br.com.sistemaagropecuaria.entity;
import java.io.Serializable;import java.util.Collection;import javax.persistence.CascadeType;import javax.persistence.DiscriminatorValue;import javax.persistence.Entity;import javax.persistence.NamedQueries;import javax.persistence.NamedQuery;import javax.persistence.OneToMany;import javax.persistence.PrimaryKeyJoinColumn;import javax.persistence.Table;
/** * * @author Andrei */@Entity@Table(name = "clientes")@NamedQueries({@NamedQuery(name = "Clientes.findAll", query = "SELECT c FROM Clientes c")})@DiscriminatorValue("Clientes")@PrimaryKeyJoinColumn(name = "idClientes")public class Clientes extends Pessoas implements Serializable {  private static final long serialVersionUID = 1L;
  @OneToMany(cascade = CascadeType.ALL, mappedBy = "idClientes")  private Collection<Vendas> vendasCollection;
  public Clientes() {  }

  public Collection<Vendas> getVendasCollection() {    return vendasCollection;  }
  public void setVendasCollection(Collection<Vendas> vendasCollection) {    this.vendasCollection = vendasCollection;  }
}
aGORA A CLASSE FORNECEDOR
/* * To change this template, choose Tools | Templates * and open the template in the editor. */
package br.com.sistemaagropecuaria.entity;
import java.io.Serializable;import javax.persistence.DiscriminatorValue;import javax.persistence.Entity;import javax.persistence.NamedQueries;import javax.persistence.NamedQuery;import javax.persistence.PrimaryKeyJoinColumn;import javax.persistence.Table;
/** * * @author Andrei */@Entity@Table(name = "fornecedores")@NamedQueries({@NamedQuery(name = "Fornecedores.findAll", query = "SELECT f FROM Fornecedores f")})@DiscriminatorValue("Fornecedores")@PrimaryKeyJoinColumn(name = "idFornecedores")public class Fornecedores extends Pessoas implements Serializable {  private static final long serialVersionUID = 1L;
  public Fornecedores() {  }
}

Com heranca, basta vc persistir a classe cliente, fornecedor e funcionario que a classe pessoa é persistida para vc automaticamente.
Eu tentei ser o mais direto possivel.se n entendeu...pode perguntar a vontade...abraços
Responder

Gostei + 0

09/07/2010

Dyego Carmo

Opa , Resolvido ?
Responder

Gostei + 0

22/07/2010

Rogério Martins

Desculpem a demora mais tive que fazer outras coisas e não deu para terminar de resolver esse assunto e só voltei a tentar agora. Vi as respostas do tópico e as aulas do Dyego Carmo e consegui fazer assim oh:
//Pessoapackage entity;
import java.io.Serializable;import javax.persistence.Basic;import javax.persistence.Column;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.GenerationType;import javax.persistence.Id;import javax.persistence.Inheritance;import javax.persistence.InheritanceType;import javax.persistence.Table;
@Entity@Table(name = "pessoa", catalog = "teste_jpa_4", schema = "public")//Observe@Inheritance(strategy = InheritanceType.JOINED)public class Pessoa implements Serializable {    private static final long serialVersionUID = 1L;    @Id    @GeneratedValue(strategy=GenerationType.IDENTITY)    @Basic(optional = false)    @Column(name = "pes_cod_pessoa", nullable = false)    private Long pesCodPessoa;    @Basic(optional = false)    @Column(name = "pes_nome", nullable = false, length = 2147483647)    private String pesNome;

//    @OneToOne(cascade = CascadeType.ALL, mappedBy = "pessoa")//    private PessoaFisica pessoaFisica;
    public Pessoa() {    }
    public Pessoa(Long pesCodPessoa) {        this.pesCodPessoa = pesCodPessoa;    }
    public Pessoa(Long pesCodPessoa, String pesNome) {        this.pesCodPessoa = pesCodPessoa;        this.pesNome = pesNome;    }
    public Long getPesCodPessoa() {        return pesCodPessoa;    }
    public void setPesCodPessoa(Long pesCodPessoa) {        this.pesCodPessoa = pesCodPessoa;    }
    public String getPesNome() {        return pesNome;    }
    public void setPesNome(String pesNome) {        this.pesNome = pesNome;    }
//    public PessoaFisica getPessoaFisica() {//        return pessoaFisica;//    }////    public void setPessoaFisica(PessoaFisica pessoaFisica) {//        this.pessoaFisica = pessoaFisica;//    }
    @Override    public int hashCode() {        int hash = 0;        hash += (pesCodPessoa != null ? pesCodPessoa.hashCode() : 0);        return hash;    }
    @Override    public boolean equals(Object object) {        // TODO: Warning - this method won't work in the case the id fields are not set        if (!(object instanceof Pessoa)) {            return false;        }        Pessoa other = (Pessoa) object;        if ((this.pesCodPessoa == null && other.pesCodPessoa != null) || (this.pesCodPessoa != null && !this.pesCodPessoa.equals(other.pesCodPessoa))) {            return false;        }        return true;    }
    @Override    public String toString() {        return "entity.Pessoa[pesCodPessoa=" + pesCodPessoa + "]";    }
}

//Pessoa Fisicapackage entity;
import java.io.Serializable;import javax.persistence.Column;import javax.persistence.Entity;import javax.persistence.PrimaryKeyJoinColumn;import javax.persistence.Table;
@Entity@Table(name = "pessoa_fisica", catalog = "teste_jpa_4", schema = "public")//Observe@PrimaryKeyJoinColumn(name = "pes_cod_pessoa")public class PessoaFisica extends Pessoa implements Serializable {    private static final long serialVersionUID = 1L;
    @Column(name = "pf_cpf", length = 14)    private String pfCpf;

//    @JoinColumn(name = "pes_cod_pessoa", referencedColumnName = "pes_cod_pessoa", nullable = false, insertable = false, updatable = false)//    @OneToOne(optional = false)//    private Pessoa pessoa;//    @OneToOne(cascade = CascadeType.ALL, mappedBy = "pessoaFisica")//    private ClienteCheque clienteCheque;
    public PessoaFisica() {    }
    public String getPfCpf() {        return pfCpf;    }
    public void setPfCpf(String pfCpf) {        this.pfCpf = pfCpf;    }
//    public Pessoa getPessoa() {//        return pessoa;//    }////    public void setPessoa(Pessoa pessoa) {//        this.pessoa = pessoa;//    }////    public ClienteCheque getClienteCheque() {//        return clienteCheque;//    }////    public void setClienteCheque(ClienteCheque clienteCheque) {//        this.clienteCheque = clienteCheque;//    }}

//Cliente Chequepackage entity;
import java.io.Serializable;import java.util.Date;import javax.persistence.Basic;import javax.persistence.Column;import javax.persistence.Entity;import javax.persistence.PrimaryKeyJoinColumn;import javax.persistence.Table;import javax.persistence.Temporal;import javax.persistence.TemporalType;
@Entity@Table(name = "cliente_cheque", catalog = "teste_jpa_4", schema = "public")//Observe@PrimaryKeyJoinColumn(name = "pes_cod_pessoa")public class ClienteCheque extends PessoaFisica implements Serializable {    private static final long serialVersionUID = 1L;
    @Basic(optional = false)    @Column(name = "cc_data_cadastro", nullable = false)    @Temporal(TemporalType.TIMESTAMP)    private Date ccDataCadastro;    @Column(name = "controle")    private Integer controle;
//    @JoinColumn(name = "pes_cod_pessoa", referencedColumnName = "pes_cod_pessoa", nullable = false, insertable = false, updatable = false)//    @OneToOne(optional = false)//    private PessoaFisica pessoaFisica;
    public ClienteCheque() {    }
    public Date getCcDataCadastro() {        return ccDataCadastro;    }
    public void setCcDataCadastro(Date ccDataCadastro) {        this.ccDataCadastro = ccDataCadastro;    }
    public Integer getControle() {        return controle;    }
    public void setControle(Integer controle) {        this.controle = controle;    }
//    @Override//    public PessoaFisica getPessoaFisica() {//        return pessoaFisica;//    }////    @Override//    public void setPessoaFisica(PessoaFisica pessoaFisica) {//        this.pessoaFisica = pessoaFisica;//    }
}

Usando as entidades acima consegui refazer funcionar o seguinte exemplo abaixo. Porem ainda tenho algumas dúvidas.
1° Observem os comentários das entidades acima.2° Utilizando herança no JPA  eu devo desprezar as anotações de relacionamento? Pois não consegui fazer funcionar com elas! Se não como ficaria a inserção na classe de teste? Se sim como eu recuperaria o objeto Pessoa ou PessoaFisica partindo de ClienteCheque?3° Nas classes filhas não existe a necessidade dos métodos equals(), hashCode() e toString()? Se existir como ficariam?
//Classe Principal (Para testes)package view;
import entity.ClienteCheque;import java.util.Date;import java.util.logging.Level;import java.util.logging.Logger;import javax.persistence.EntityManager;import javax.swing.JOptionPane;import persistence.Conexao;import persistence.DatabaseException;
public class Main {
    private ClienteCheque clienteCheque = new ClienteCheque();    private EntityManager manager;
    public Main() {
        salvar();    }
    public void salvar() {
        try {            manager = Conexao.getConexao();            manager.getTransaction().begin();
            clienteCheque.setPesNome("Rogerio");            clienteCheque.setPfCpf("222.222.222-22");            clienteCheque.setCcDataCadastro(new Date());            clienteCheque.setControle(1);
            manager.merge(clienteCheque);

            manager.getTransaction().commit();            JOptionPane.showMessageDialog(null, "Salvou!");        } catch (Exception ex) {            JOptionPane.showMessageDialog(null, "Não Salvou! " + DatabaseException.findLastException(ex));            manager.getTransaction().rollback();            Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);        }    }
    public static void main(String jo[]) {        new Main();    }}


ESTE É O MODELO DO BANCO QUE UTILIZEI PRA FAZER O TESTE (Obs: Isso foi feito só para testes a critério de estudo)
Responder

Gostei + 0

28/07/2010

Dyego Carmo

Legal !

Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar