Fórum Inserções em varias tabelas #8072

29/07/2009

0

Bom dia , estou com dificuldades de fazer inserções em varias tabelas diferentes com JSF, o problema é que eu tenho um tabela CLIENTE  e em outra tabela  a tabela CONTATO , nessa eu tenho o idCliente , a dificuldade está sendo conseguir esse idCliente para a tabela contato, qual seria a melhor maneira de fazer isso? Ai vai minha minha classe:

obrigado.

package br.org.shift.managedbean;

import br.org.shift.dao.FactoryDAO;
import br.org.shift.persistencia.Cliente;
import br.org.shift.persistencia.Contato;
import br.org.shift.persistencia.TelefoneContato;

public class ClienteManagerBean {

    public Contato getContato() {
        return contato;
    }

    public void setContato(Contato contato) {
        this.contato = contato;
    }

    private Cliente cliente = new Cliente();
    private Contato contato = new Contato();
    private TelefoneContato telefoneContato = new TelefoneContato();

    public TelefoneContato getTelefoneContato() {
        return telefoneContato;
    }

    public void setTelefoneContato(TelefoneContato telefoneContato) {
        this.telefoneContato = telefoneContato;
    }

    public Cliente getCliente() {
        return cliente;
    }

    public void setCliente(Cliente cliente) {
        this.cliente = cliente;
    }
   
       
   
    public String saveCliente(){
       
        try {
                if (buscarCPFCNPJ() == false){
              FactoryDAO.getCLIENTE_DAO().save(cliente);
                FactoryDAO.getCONTATO_DAO().save(contato);
                FactoryDAO.getTELEFONE_CONTATO_DAO().save(telefoneContato);
            }
            else{
                return "cadastroerro";
            }
               
        } catch (Exception e) {
           
            e.printStackTrace();
           
            return "cadastroerro";
        }
       
        return "cadastrosucesso";
       
    }
   
    public boolean buscarCPFCNPJ(){
       
        try {
            if (FactoryDAO.getCLIENTE_DAO().buscaCPFCNPJ(cliente.getCpfCnpjCliente())== false){
                return false;   
            }
           
        } catch (Exception e) {
           
            e.printStackTrace();
        }
        return true;
    }
   
}


Cristian Mietlicki

Cristian Mietlicki

Responder

Posts

29/07/2009

Dyego Carmo

Poderia colar aqui a estrura das três tabelas ?
Assim posso sugerir algo mais proximo da sua realidade.

Responder

Gostei + 0

29/07/2009

Cristian Mietlicki

Vou mandar no teu email , a modelagem , pode ser?
Responder

Gostei + 0

29/07/2009

Dyego Carmo

Pode sim , fico no aguardo:

dyego.leal@gmail.com
Responder

Gostei + 0

29/07/2009

Cristian Mietlicki

Pronto ja mandei , obrigado.
Responder

Gostei + 0

29/07/2009

Cristian Mietlicki

recebeu o sql?
Responder

Gostei + 0

29/07/2009

Dyego Carmo

Recebi , estou bolando a resposta baseando-me no SQL.
Responder

Gostei + 0

29/07/2009

Cristian Mietlicki

Ok, desde ja obrigado.
Responder

Gostei + 0

29/07/2009

Dyego Carmo

Por favor , mande no meu email as entidade de telefone , cliente e contato que voce criou... para que eu de uma olhadinha...

Responder

Gostei + 0

29/07/2009

Cristian Mietlicki

ok , ja mandei :)
Responder

Gostei + 0

31/07/2009

Dyego Carmo

Opa !

Desculpa pela demora...

Voce pode mandar o hibernate salvar todos de uma vez só... COMO ?

Crie em sua entidade Cliente um metodo:

public void addContato(Contato cont) {

    cont.setCliente(this);
    if (contato == null) {
     contato = new LinkedList<Contato>();
    }
    contato.add(cont);

}


Pronto.. voce pode chamar o getDaoCliente().save(cliente) que o hibernate vai detectar que existe um CONTATO que não foi salvo e vai salvar tambem...

Faca o mesmo para o telefone :)


Valeu !



Responder

Gostei + 0

31/07/2009

Cristian Mietlicki

Dessa maneira ele salva o idCliente em contatos?  obrigado.
Responder

Gostei + 0

31/07/2009

Dyego Carmo

Sim , o Hibernate vai detectar que precisa "colocar o id do cliente" quando existir a associacao...

Vai com fé :)


Responder

Gostei + 0

31/07/2009

Cristian Mietlicki

Vou testar aqui ai ja te falo, obrigado.
Responder

Gostei + 0

31/07/2009

Cristian Mietlicki

Desculpe , mas não entendi em qual momento vou chamar essa função no meu Dão , eu preciso passar o objeto contato para ela.

public void addContato(Contato cont) {

    cont.setCliente(this);
    if (contato == null) {
     contato = new LinkedList<Contato>();
    }
    contato.add(cont);

}
Responder

Gostei + 0

31/07/2009

Dyego Carmo

Nao vai chamar no dao...

voce borta este medoto no sei Cliente.java

ai vc cria um cliente:

Cliente cli = new Cliente();

depois que insetit um contato e cria um contato:

Contato conta = new Contato();

Como que vc diz para o hibernate que um cliente possui este contato ?


cli.addContato(conta);

Factory.getDAOCliente().save(cli);


Entendeu ?



Responder

Gostei + 0

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

Aceitar