Problemas com Hibernate

Bom Dia,

Estou criando um sistema usando Hibernate com Annotations, e o meu problema é o seguinte.

Tenho uma classe chamada Usuario que contém um atributo chamado bloqueado do tipo boolean, quando eu faço o login na minha classe ActionLogin eu verifico se este atributo é verdadeiro ou falso, quando é verdadeiro ele volta para a pagina de login e quando é falso ele efetua o login.

O problema é que quando eu efetuo o login como atributo bloqueado com o valor falso, se eu alterar via banco de dados (MySQL) o valor para verdadeiro, eu continuo conseguindo me logar normalmente, e a minha Action contiua trazendo o valor do atributo como falso, sendo que no banco de dados está como verdadeiro, ou seja ela continua trazendo os mesmos dados do usuário da última vesz.

Procurei aqui no guj, informações sobre este problema e vi que possivelmente pode ser problema de Cache, só que o meu “hibernate.properties” só contém as linhas de conexão com o banco de dados e mesmo assim eu continuo tendo o mesmo problema.

Alguém tem uma sugestão para a resolução deste problema.

Atenciosamente,

Carlos.

Coloca os codigos para a gente ver, fica melhor…

ja tentou utilizar refresh? no meu caso funcionou com um projeto Struts 2 com Hibernate. :slight_smile:

Isso acontece mesmo quando você pára o servidor e reinicia?

Segue abaixo, os códigos que estou utilizando:

Hibernate.properties

hibernate.dialect org.hibernate.dialect.MySQLDialect
hibernate.connection.driver_class com.mysql.jdbc.Driver
hibernate.connection.url jdbc:mysql://localhost:3306/ltades
hibernate.connection.username root
hibernate.connection.password root

class HibernateFactory

public class HibernateFactory {
	private static SessionFactory sf;
	
	static{
		AnnotationConfiguration cfg = new AnnotationConfiguration();
		cfg.addAnnotatedClass(Menu.class);
		cfg.addAnnotatedClass(Submenu.class);
		cfg.addAnnotatedClass(Usuario.class);
		cfg.addAnnotatedClass(ListaPermissoes.class);
		cfg.addAnnotatedClass(Permissao.class);
		sf = conf.buildSessionFactory();
	}

	public static Session getSf() {
		return sf.openSession();
	}

class usuarioDAO

	public Usuario login(Session session, Usuario u){
		
			String hql = "SELECT u FROM Usuario AS u WHERE u.login= :login";
						
//			session.clear();
			Query query = session.createQuery(hql);
			
			query.setParameter("login", u.getLogin());
			Usuario user = (Usuario) query.uniqueResult();

			System.out.println(user.getLogin());
			System.out.println(user.getPassword());
			System.out.println(user.isBloqueado());
			
			return user;
	}

Quando eu reinicio o Apache, ai ele busca os dados corretamente da primeira vez que eu faço o login.

Posta o código de onde você está atualizando o atributo bloqueado.

Eu estou fazendo isso via banco de dados.

Cara, valew pela ajuda.

O probema acontece porque eu estava realizando a alteração direto via banco de dados, eu criei uma Action só para atualizar o atributo bloqueado, e assim funcionou corretamente.

Obrigado pela ajuda.

Carlos