to com o seguinte problema…
eu tenho uma tela de cadastro que tem um jTable utilizando o TableModel…
e se eu alterar alguns dados dela ele jah altera na base de dados…
ai se eu clico no botao cancelar, os dados jah tão alterado…
Uma possibilidade é tu manter um List de dados antigos no teu table Model…Antes de salvar no banco de dados, tu passaria os registros q serão alterados para esse list, para armazenar o estado antigo. Caso vc queira cancelar, o teu list de dados antigos se torna o teu list “Oficial”…Apenas uma idéia…
Fernando
Marky.Vasconcelos
Provavelmente sua List foi carregada do Hibernate e ele altera a classe para enviar os dados para o banco em cada set se voce o configurou como auto-commit.
frankwco
eae pessoal…
eu deixei o auto-commit false mas naum resolveu…
alguem tem alguma outra ideia???
vlw
Marky.Vasconcelos
Posta seu código do TableModel e da DAO que carrega os dados. Se possivel coloca também onde voce configura o Hibernate.
packagebr.com.sisfunrejus.acessobd;importjava.io.Serializable;importjava.util.List;importjavax.persistence.Query;importjavax.persistence.EntityManager;importorg.hibernate.HibernateException;publicclassDAO<E>{privateClass<E>classeEntidade;privateQueryconsulta;privateEntityManagerem;publicDAO(Class<E>c){try{this.classeEntidade=c;em=Banco.getInstancia().getEm();consulta=em.createQuery("from "+classeEntidade.getSimpleName());}catch(Exceptione){e.printStackTrace();}}publicvoidupdate(Eobj){try{em.getTransaction().begin();em.merge(obj);em.getTransaction().commit();}catch(Exceptione){if(em.getTransaction().isActive()){em.getTransaction().rollback();}e.printStackTrace();}}publicvoiddelete(Eobj){try{em.getTransaction().begin();em.remove(obj);em.getTransaction().commit();}catch(Exceptione){if(em.getTransaction().isActive()){em.getTransaction().rollback();}e.printStackTrace();}}@SuppressWarnings("unchecked")publicList<E>list(){List<E>l=null;try{em.getTransaction().begin();l=consulta.getResultList();em.getTransaction().commit();}catch(Exceptione){if(em.getTransaction().isActive()){em.getTransaction().rollback();}e.printStackTrace();}returnl;}publicList<E>listaProtocolo(StringidGuia){List<E>l=null;try{em.getTransaction().begin();Queryconsu=em.createQuery("from EntidadeProtocolo where guia.id="+idGuia);l=consu.getResultList();em.getTransaction().commit();}catch(Exceptione){if(em.getTransaction().isActive()){em.getTransaction().rollback();}e.printStackTrace();}returnl;}publicList<E>listaRegistroAuxiliar(StringidGuia){List<E>l=null;try{em.getTransaction().begin();Queryconsu=em.createQuery("from EntidadeRegAux re where re.guia.id="+idGuia);l=consu.getResultList();em.getTransaction().commit();}catch(Exceptione){if(em.getTransaction().isActive()){em.getTransaction().rollback();}e.printStackTrace();}returnl;}publicvoidinsert(Eobj){try{em.getTransaction().begin();em.persist(obj);em.getTransaction().commit();}catch(Exceptione){if(em.getTransaction().isActive()){em.getTransaction().rollback();}e.printStackTrace();}}publicEfind(Serializableid){Ec=null;try{em.getTransaction().begin();c=(E)em.find(classeEntidade,id);em.getTransaction().commit();}catch(Exceptione){if(em.getTransaction().isActive()){em.getTransaction().rollback();}e.printStackTrace();}returnc;}publicErecupera(Longid){Ee=null;try{em.getTransaction().begin();e=(E)em.find(classeEntidade,id);em.getTransaction().commit();}catch(Exceptionex){if(em.getTransaction().isActive())em.getTransaction().rollback();ex.printStackTrace();}returne;}@SuppressWarnings("unchecked")publicList<E>findByCriteria(org.hibernate.criterion.Criterion...criterion){List<E>lista=null;em.getTransaction().begin();org.hibernate.Sessionsession=((org.hibernate.ejb.HibernateEntityManager)em).getSession();org.hibernate.Criteriacrit=session.createCriteria(classeEntidade);for(org.hibernate.criterion.Criterionc:criterion){crit.add(c);}lista=crit.list();em.getTransaction().commit();returnlista;}@SuppressWarnings("unchecked")publicList<E>findByExample(ObjectexampleInstance,String...excludeProperty){List<E>lista=null;try{em.getTransaction().begin();org.hibernate.Criteriacrit=((org.hibernate.ejb.HibernateEntityManager)em).getSession().createCriteria(classeEntidade);org.hibernate.criterion.Exampleexample=org.hibernate.criterion.Example.create(exampleInstance);for(Stringexclude:excludeProperty){example.excludeProperty(exclude);}crit.add(example);lista=crit.list();em.getTransaction().commit();}catch(HibernateExceptionex){if(em.getTransaction().isActive()){em.getTransaction().rollback();}ex.printStackTrace();}returnlista;}@SuppressWarnings("unchecked")publicList<E>findByExamplePartial(ObjectexampleInstance,String...excludeProperty){List<E>lista=null;try{em.getTransaction().begin();org.hibernate.Criteriacrit=((org.hibernate.ejb.HibernateEntityManager)em).getSession().createCriteria(classeEntidade);org.hibernate.criterion.Exampleexample=org.hibernate.criterion.Example.create(exampleInstance);example.enableLike(org.hibernate.criterion.MatchMode.ANYWHERE);example.ignoreCase();example.excludeZeroes();for(Stringexclude:excludeProperty){example.excludeProperty(exclude);}crit.add(example);lista=crit.list();em.getTransaction().commit();}catch(HibernateExceptionex){if(em.getTransaction().isActive()){em.getTransaction().rollback();}ex.printStackTrace();}returnlista;}}
Marky.Vasconcelos
Hmm… na DAO, antes de carregar, coloque setAutoCommit(false) na Session que voce carrega do Hibernate.
frankwco
eae Marky,
pra persistir os dados eu uso a entidade, dao, e o arquivo de configuração do hibernate…
onde eu coloco o setAutoCommit(false)???
sou iniciante em java, ainda tenho bastant dificuldade…