Problemas com Hibernate

8 respostas
C

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.

8 Respostas

alanbrasil1984

Coloca os codigos para a gente ver, fica melhor…

pissurno

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

Alexandre_Saudate

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

C

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;
	}
C

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

Alexandre_Saudate

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

C

Eu estou fazendo isso via banco de dados.

C

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

Criado 25 de março de 2008
Ultima resposta 25 de mar. de 2008
Respostas 8
Participantes 4