Sistema de Login

galera é o seguinte…

estou montando um sistema de login, ate ai tudo ok.
Queria adicionar um detalhe: se o usuario digitado for de um admin, irei direcionar para outra pagina.

Estou usando struts, hibernate e HSQLDB (usei hibernate para criar a tabela)

drop table Login if exists
create table Login (
   id bigint generated by default as identity (start with 1),
   admin bit,
   senha varchar(255),
   usuario varchar(255),
   primary key (id)
)

Fiz um metodo para checar se o usuario esta registrado no banco, mas gostaria de adicionar neste metodo, alguma coisa q vefificasse se o usuario é admin.
Como posso fazer isto?

public boolean pesquisaLogin(String nome, String senha){
	Criteria select = session.createCriteria(Login.class);
	select.add(Restrictions.eq("usuario", nome));
	select.add(Restrictions.eq("senha", senha));
	List result = select.list();

	if (result.isEmpty())
		return false;
	else
		return true;
}

O q preciso adicionar neste metodo para q ele verifique se o usuario é admin?
Obrigado

vejam o q eu fiz…

		public String pesquisaLogin(String nome, String senha) {
		Criteria select = session.createCriteria(Login.class);

		select.add(Restrictions.eq("usuario", nome));
		select.add(Restrictions.eq("senha", senha));
		select.add(Restrictions.eq("admin", 1));
		List result = select.list();

		if (!result.isEmpty())
			return "admin";
		else{

		select.add(Restrictions.eq("usuario", nome));
		select.add(Restrictions.eq("senha", senha));

		List result2 = select.list();
		if (result2.isEmpty())
			return "invalido";
		else
			return "valido";
	}

}

o q tem de errado? naum funcionou…

vejam a exception

exception

javax.servlet.ServletException: could not execute query
	org.apache.struts.action.RequestProcessor.processException(RequestProcessor.java:523)
	org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:421)
	org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
	org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
	org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

root cause

org.hibernate.exception.SQLGrammarException: could not execute query
	org.hibernate.exception.ErrorCodeConverter.convert(ErrorCodeConverter.java:70)
	org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
	org.hibernate.loader.Loader.doList(Loader.java:1525)
	org.hibernate.loader.Loader.list(Loader.java:1505)
	org.hibernate.loader.criteria.CriteriaLoader.list(CriteriaLoader.java:111)
	org.hibernate.impl.SessionImpl.list(SessionImpl.java:1256)
	org.hibernate.impl.CriteriaImpl.list(CriteriaImpl.java:299)
	br.com.marcelo.dao.DaoLogin.pesquisaLogin(DaoLogin.java:22)
	br.com.marcelo.action.LoginAction.execute(LoginAction.java:23)
	org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:419)
	org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
	org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
	org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

Fala Marcelo, rapaz, eu tava usando hsldb tb em alguns testes que eu tava fazendo e tava dando esse erro em algumas consultas utilizando hibernate. Daí mudei para mysql, não mudei nada no código e funcionou. Naum sei o que eh direito, mas acho que tem certas coisas que o hsqldb não suporta e fica dando esse erro.
Falou,

Alberto

Cade a tua classe Login ?

Os atributos usuario, senha e admin existem na tua classe Login?

Nao entendi pq vc vai faz a pesquisa novamente se ele nao for administrador. Nao e mas facil vc trazer independente disse e depois disso testar?

public String pesquisaLogin(String nome, String senha) {

	Login u = (Login) session.createCriteria(Login.class)
 	.add(Restrictions.eq("usuario", nome))
	.add(Restrictions.eq("senha", senha))
	.uniqueResult();
 
	// Caso nao venha ninguem
	if ( u == null ) {
		return "invalido";
	}
	// Caso venha alguem
	else {

		// Adminstrador
		if( u.getAdmin == 1 ) {
			return "admin";
		}
		else {
 			return "valido";
		}

 	}
 
 }

pois é…

mudei o banco para mysql.
mudei o metodo, vejam só:

public int pesquisaLogin(String nome, String senha) {
		Criteria select = session.createCriteria(Login.class);

		select.add(Restrictions.eq("usuario", nome));
		select.add(Restrictions.eq("senha", senha));
		Login usu = (Login) select.uniqueResult(); 
		
		if(usu==null)
		      //0 o usuario não existe
		      return 0;
		   else
		      if(usu.isAdmin()==true)
		        //é admin
		        return 1;
		      else
		         //existe mas não é admin
		        return 2;
}

veja a classe Login:

package br.com.marcelo.modelo;

import javax.persistence.Entity;
import javax.persistence.GeneratorType;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table (name="Login")
public class Login {
	
	private Long id;
	private String usuario,senha;
	boolean admin;
	
	public boolean isAdmin() {
		return admin;
	}
	public void setAdmin(boolean admin) {
		this.admin = admin;
	}
	@Id (generate=GeneratorType.AUTO)
	public Long getId() {
		return id;
	}
	public void setId(Long id) {
		this.id = id;
	}
	public String getSenha() {
		return senha;
	}
	public void setSenha(String senha) {
		this.senha = senha;
	}
	public String getUsuario() {
		return usuario;
	}
	public void setUsuario(String usuario) {
		this.usuario = usuario;
	}

}

mas aina continuou o mesmo erro…

parece q o hibernate nao esta criando a tabela, naum da nenhum erro , mas naum cria a tabela:
Vejam o codigo:

package br.com.marcelo.hibernate;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;
import org.hibernate.tool.hbm2ddl.SchemaExport;

import br.com.marcelo.modelo.Login;

public class HibernateFactory {
	private static SessionFactory factory;

	private static AnnotationConfiguration cfg;
	static {
		cfg = new AnnotationConfiguration();
		cfg.addAnnotatedClass(Login.class);

		// cfg.configure(); se usar o xml
		factory = cfg.buildSessionFactory();
	}

	static public Session getSession() {
		return factory.openSession();
	}

	public static void create() {
		new SchemaExport(cfg).create(true, true);
	}

}

Mas num dah nenhuma exceção?

Cara, onde tah o @Basic dos outros atributos? Na classe que gera o banco vc tem q adicionar o package antes de adicionar a classe, acho q eh: cfg.addPackage(“com.marcelo.modelo”), mas dah uma olhada na doc de annotation.

a exceção que ta dando eu já postei um pouco antes…
ja fiz varias coisas assim e funcionou beleza…

só agora q ta dando este erro…

subindo…