Help to insert foreign key!

From: Reinaldo Coelho Sartorelli (reinaldo_sartorell..ahoo.com.br)
Date: Thu Aug 12 2004 - 10:04:55 EDT

  • Next message: Mike Kienenberger: "Re: Help to insert foreign key!"

    Hi people!

    I have this class :

    package br.com.leiarock.mapeamento;

    ********************************
    import org.objectstyle.cayenne.access.DataContext;
    //import br.com.leiarock.mapeamento.Generos;

    public class Bandas extends br.com.leiarock.mapeamento.auto._Bandas {

            /**
             *
             *..aram con
             *..aram banda
             *..eturn
             * Método para efetuar a gravação de uma determinada banda.
             * É retornado um booleano sendo ele VERDADEIRO(true) quando a
             * gravação ocorrer com sucesso e FALSO(false) quando houver algum
             * problema.
             */
            public boolean gravarBanda(DataContext con, Bandas banda){
                    try{
                            if(validaDados(banda) == false) return false; //Verifica se os campos
    obrigatórios estão preenchidos.
                                            
                            System.out.println("Setou generos");
                            con.registerNewObject(banda); //Reserva espaco para novo registro no banco.
                            System.out.println("gerou novo objeto");
                            con.commitChanges(); // Confirma operação de gravação.
                            System.out.println("commitou");
                            return true;
                    }
                    catch(Exception e){
                            System.out.println(e.toString());
                            con.rollbackChanges(); // Ignora as informações devido ao erro.
                            return false;
                    }
            }

            /**
             *
             *..aram con
             *..aram banda
             *..eturn
             * Método para efetuar a alteração de uma banda.
             * É retornado um booleano sendo ele VERDADEIRO(true) quando a
             * gravação ocorrer com sucesso e FALSO(false) quando houver algum
             * problema.
             */
            public boolean alterarBanda(DataContext con, Bandas banda){
                    try{
                            con.commitChanges(); // Confirma operação de gravação.
                            return true;
                    }
                    catch(Exception e){
                            con.rollbackChanges(); // Ignora as informações devido ao erro.
                            return false;
                    }
            }

            /**
             *
             *..aram con
             *..aram banda
             *..eturn
             * Método para efetuar a exclusão de uma banda.
             * É retornado um booleano sendo ele VERDADEIRO(true) quando a
             * gravação ocorrer com sucesso e FALSO(false) quando houver algum
             * problema.
             */
            public boolean excluiBanda(DataContext con, Bandas banda){
                    try{
                            con.deleteObject(banda); //Marca o objeto como excluido.
                            con.commitChanges(); // Confirma operação de gravação.
                            return true;
                    }
                    catch(Exception e){
                            con.rollbackChanges(); // Ignora as informações devido ao erro.
                            return false;
                    }
            }
            
            /**
             *
             *..aram banda
             *..eturn
             * Método para validar o preenchimento dos dados da classe.
             * É retornado um booleano sendo ele VERDADEIRO(true) quando a
             * gravação ocorrer com sucesso e FALSO(false) quando houver algum
             * problema.
             */
            private boolean validaDados(Bandas banda){
                    if(
                    banda.getNome().toString().length() > 0
                    &&
                    banda.getToGeneros() != null){
                            return true;
                    }
                    else{
                            return false;
                    }
            }
    }

    *****************************************

    And i insert a register using a method gravarBanda(DataContext con, Bandas
    banda) to register a class, but generate this exception :

    ***
    Error : org.objectstyle.cayenne.CayenneRuntimeException: [v.1.1M7_1 June 15
    2004] Cannot set object as destination of relationship toGeneros because it
    is in a different DataContext
    ***

    This a code for insert a register :

    *****************************************
                    DataContext con = DataContext.createDataContext(); //generate Datacontext
                    
                    try{
                            ConsultaGeneros consulta = new ConsultaGeneros(); //Generate a new Search
                            // - Consulta = Search
                            List l = consulta.buscarDescricao(con, "Punk"); //Generate a Find.
                            if(l.size()>0){
                                    Generos ge = (Generos) l.get(0);
                                    System.out.println("Achou Genero:" + ge.getDescricao());
                                    Bandas b = new Bandas();
                                    b.setToGeneros(ge); //Set a relational Genero from Bandas
                                    // Banda = Band
                                    b.setNome("Cólera"); //Set a name from Band
                                    if(b.gravarBanda(con, b)){
                                            System.out.println("Gravou");
                                    }
                                    else{
                                            System.out.println("Deu erro");
                                    }
                            }
    **************************************

    Tks for all
    Reinaldo.



    This archive was generated by hypermail 2.0.0 : Thu Aug 12 2004 - 10:04:43 EDT