estou com o seguinte erro:
1º Quando mudo o valor de alguma coisa pelo banco de dados por ex: “nome do cliente” na aplicação pressiono F5 e ele continua desatualizado.
2º Tenho a aplicação aberta em dois browsers diferentes altero alguma coisa em um deles ai no outro quando pressiono F5 ele atualiza se eu pressionar novamente mostra o valor anterior e fica em loop nisso.
/* * To change this template, choose Tools | Templates * and open the template in the editor. */packagemodel.dao;importbr.com.caelum.vraptor.ioc.Component;importentity.Servico;importhibernate.HibernateUtil;importjava.io.Serializable;importjava.util.List;importorg.hibernate.Criteria;importorg.hibernate.FlushMode;importorg.hibernate.HibernateException;importorg.hibernate.criterion.Order;importorg.hibernate.criterion.Projections;/** * * @author Hugo Mesquita */@ComponentpublicclassHibernateDAO<T>implementsInterfaceDAO<T>{protectedClass<T>classe;publicHibernateDAO(Class<T>classe){this.classe=classe;}@OverridepublicSerializablesalvar(Tentidade){Serializableresult=null;try{HibernateUtil.beginTransaction();result=HibernateUtil.getSession().save(entidade);HibernateUtil.beginTransaction().commit();}catch(HibernateExceptione){e.printStackTrace();HibernateUtil.beginTransaction().rollback();}finally{HibernateUtil.closeTransaction();}returnresult;}@Overridepublicvoidalterar(Tentidade){try{HibernateUtil.beginTransaction();HibernateUtil.getSession().update(entidade);HibernateUtil.beginTransaction().commit();}catch(HibernateExceptione){e.printStackTrace();HibernateUtil.beginTransaction().rollback();}finally{HibernateUtil.closeTransaction();}}@Overridepublicvoidexcluir(Tentidade){try{HibernateUtil.beginTransaction();HibernateUtil.getSession().delete(entidade);HibernateUtil.beginTransaction().commit();}catch(HibernateExceptione){e.printStackTrace();HibernateUtil.beginTransaction().rollback();}finally{HibernateUtil.closeTransaction();}}@OverridepublicList<T>listarPorNome(Stringnome){thrownewUnsupportedOperationException("Not supported yet.");}@OverridepublicList<T>listar(){return(List<T>)HibernateUtil.getSession().createCriteria(classe).list();}@OverridepublicList<T>listarPorOrdemDescId(){returnHibernateUtil.getSession().createCriteria(Servico.class).addOrder(Order.desc("id")).list();}@OverridepublicList<T>listarPorOrdemAscId(){returnHibernateUtil.getSession().createCriteria(Servico.class).addOrder(Order.asc("id")).list();}@OverridepublicTgetPorId(Longid){return(T)HibernateUtil.getSession().get(classe,id);}@Overridepublicintcount(){Criteriacriteria=HibernateUtil.getSession().createCriteria(classe);criteria.setProjection(Projections.rowCount());return((Integer)criteria.list().get(0)).intValue();}}
H
hugohmesquita
o segundo já consegui corrigir obrigado! como eu desabilito essa cache de 2º nível? ela vem por default ativada?
H
hugohmesquita
Pronto!! consegui!!! :D
implementei:
@InterceptspublicclassHibernateTransactionInterceptorimplementsInterceptor{privatefinalSessionsession;privatefinalValidatorvalidator;publicHibernateTransactionInterceptor(Sessionsession,Validatorvalidator){this.session=session;this.validator=validator;}@Overridepublicvoidintercept(InterceptorStackstack,ResourceMethodmethod,Objectinstance){Transactiontransaction=null;try{transaction=session.beginTransaction();stack.next(method,instance);if(!validator.hasErrors()){transaction.commit();}}finally{if(transaction!=null&&transaction.isActive()){transaction.rollback();}}}@Overridepublicbooleanaccepts(ResourceMethodmethod){returntrue;// Will intercept all requests}}