Tenho um form SWING contendo um JTable para os itens.
Ao confirmar as alterações de um pedido, preciso comparar o array que resultou das operações no JTable (inclusão, alteraçã e exclusão de itens) com o que há dentro da base de dados.
Qual a maneira mais elegante de realizar este procedimento ?
Estou usando Hibernate com Java DB embarcado, com as classes PedidoVenda e ItemPedido relacionadas da seguinte forma:
você poderia posta um exemplo de como vai ser comparado, como vem os dados no primeiro array, e como vem os dados no segundo array, isso vai ajudar um pouco
V
vicentedepaula
Os arrays são de objetos.
Estou fazendo da seguinte forma:
Os dados são gravados sem problema. Mas ocorre o seguinte erro visualizado no console (ver erro no final). Se eu comento a linha ipDAO.excluirItensPedido(pv); o erro não acontece, contudo grava de forma indevida os itens.
publicclassGenericDAO<TextendsSerializable>{privateSessionsessao;privatefinalClass<T>classePersistente;publicGenericDAO(){this.classePersistente=(Class<T>)((ParameterizedType)getClass().getGenericSuperclass()).getActualTypeArguments()[0];}/** * Caso o id do objeto já exista na base de dados, ocorrerá o update. Caso * contrário, o insert. * * @param entity */protectedvoidsaveOrUpdate(Tentity){this.sessao=HibernateUtil.getSession();try{this.sessao.beginTransaction();this.sessao.saveOrUpdate(entity);this.sessao.getTransaction().commit();//O ERRO ABAIXO ESTÁ APONTANDO PARA ESTA LINHA}catch(Throwablet){this.sessao.getTransaction().rollback();t.printStackTrace();}finally{fecharSessao();}}/** * retorna os registros que atendam as restrições passadas pelos parâmetros * * @param cCampo - campo que haverão filtragem. * @param cConteudo - conteúdo para os campos de cCampo. * @param cLike - informa se a consulta do campo em cCampo será por * igualdade ou like. * @param filtraPorVendedor - informa se deverá filtrar os dados pelo * id_vendedor, que não necessita estar em cCampo. * @return */publicList<T>ListaCondicional01(StringcCampo,ObjectcConteudo,BooleancLike,BooleanfiltraPorVendedor){this.sessao=HibernateUtil.getSession();this.sessao.beginTransaction();Criteriacriteria=this.sessao.createCriteria(classePersistente);List<T>aResultado;if(filtraPorVendedor){criteria.add(Restrictions.eq("id_vendedor",Acesso.getInstancia().getCodigo()));}if(cLike){criteria.add(Restrictions.like(cCampo.toString(),"%"+cConteudo.toString()+"%").ignoreCase());}else{if(cConteudoinstanceofString){criteria.add(Restrictions.eq(cCampo.toString(),cConteudo.toString()).ignoreCase());}else{criteria.add(Restrictions.eq(cCampo.toString(),cConteudo));}}aResultado=(ArrayList<T>)criteria.list();this.sessao.getTransaction().commit();fecharSessao();returnaResultado;}...