Alguem me ajuda como fazer CRUD com 2 javabeans!

6 respostas
M

Pessoal to a 1 semana me matando aqui tentando faze um crud em 2 javabeans e sempre da esse erro veja

125719 [AWT-EventQueue-0] ERROR jdbc.AbstractBatcher  - Exception executing batch: 
org.hibernate.StaleStateException: Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1
        at org.hibernate.jdbc.Expectations$BasicExpectation.checkBatched(Expectations.java:61)
        at org.hibernate.jdbc.Expectations$BasicExpectation.verifyOutcome(Expectations.java:46)
        at org.hibernate.jdbc.BatchingBatcher.checkRowCounts(BatchingBatcher.java:68)
        at org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:48)
        at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:246)
        at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:237)
        at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:142)
        at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:298)
        at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27)
        at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1000)
        at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:338)
        at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:106)
        at br.com.estudo.dao.GenericDAO.update(GenericDAO.java:133)

meu codigo

addressB.setNumero(Integer.parseInt(jt_numero.getText()));
        try {
            addressC.insereEndereco(addressB);
            addressB = addressC.buscaEnderecoPeloEndereco(addressB.getEndereco());
            //bean = new CustomerBean();
            bean.setEnderecoC(addressB);
            controlC.atualizaCliente(bean); // o erro ocorre aqui 
            JOptionPane.showMessageDialog(null, "Cadastro realizado com sucesso!");
            dispose();
        } catch (Exception ex) {
            ex.printStackTrace();
            JOptionPane.showMessageDialog(null, "Não foi possível cadastrar o endereco");
        }

Pessoal desculpa ta enchendo o saco mas estou no disespero para resolver isso, thanks pela atencao de todos vcs!!!

6 Respostas

articof

cara, seu bean tem a chave primaria ? tipo bean.getId() existe?, se não, não vai atualizar nada. Pelo erro que vejo o bean esta vazio.

M

nao entendi o que falo amigo! poderia ser mais claro? thanks

M

isso?

public int getCodigo() {
        return codigo;
    }

    public void setCodigo(int codigo) {
        this.codigo = codigo;
    }
articof

se você tem um registro no banco de bados, ele obrigatoriamente tem pelo menos uma chave primaria, certo? você quando vai atualizar um dado no banco, precisa obrigatoriamente dessa chave, se não o BD não sabe qual registro atualizar.
Geralmente quando vc atualiza um registro, primeiro você procura ele no banco, e depois joga ele num lugar para o usuário ver os dados e modificar o que precisar.

M

Entendi, vc teria algum exemplo para me esclarecer melhor o meu problema? thanks !

articof

Eu não tenho um código para desktop, mais para web eu uso um campo não visível tipo “hidden” para que o usuário não veja nem modifique a chave.
Dai quando o usuário mandar atualizar, vão todos os campos, incluindo a chave, ok.
A logica que você mostrou no começo acho que não precisa mudar nada, apenas incluir o campo protegido da chave primaria na camada view.
Espero ter ajudado.
Fabián

Criado 25 de setembro de 2009
Ultima resposta 28 de set. de 2009
Respostas 6
Participantes 2