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
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,
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);
}
}
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.