Hibernate e find com varios parametros

5 respostas
smorigo

Boa noite pessoal estou criando um metodo aqui para verificar se um usuário existe mais estou tendo problemas…
Acho bom ressaltar que sou iniciante em JAVA e meu metodo pode precisar de muito refinamento e correções mais o problema é que ele fica reclamando do Object[] falando q “a cannot be resolved” até importei o java.lang.Object; mais nao ajudo em nada…

public boolean ValidaUsuario(String empresa, String usuario, String senha) throws DAOException {

		try {
			Session session = ConnectionFactory.getInstance().getSession();
			
			if (session.find("from br.com.empresa.smb.bean.Usuario where empresa = ? and usuario = ? and senha = ?",
							new Object[] { a, b, c },
							new Type[] { Hibernate.STRING, Hibernate.STRING, Hibernate.STRING }).size() == 1) {
				return true;	
			} else {
				return false;
			}
			
			session.flush();
			session.close();			

		} catch (HibernateException e) {
			throw new DAOException(e);
		}
	}

5 Respostas

F

caro smorigo

Sugestão 1: confira sua modelagem.
Suponho que vc tenha um Objecto Usuario com suas propriedades, sendo que, dentre elas um Objeto empresa também com sua propriedades.

Usuario
  codigo
  nome
  Empresa

dessa forma sua query não poderia receber uma String empresa, mas sim um Objeto empresa ou então sim o código da empresa e por ai vai.

Sugestão 2:
de onde vem a, b, c ?

new Object[] { a, b, c }

flw

L

Uma forma interessante seria fazer da seguinte maneira também. Porém verifique os tipos de dados que empresa, usuario e senha estão mapeados no hibernate.

public boolean ValidaUsuario(String empresa, String usuario, String senha) throws DAOException {
 
  try {
    Session session = ConnectionFactory.getInstance().getSession();

    List resultado;
    String hql = "from br.com.empresa.smb.bean.Usuario where empresa = :empresa and usuario = :usuario and senha = :senha";

    Query q = session.createQuery(hql);
    q.setParameter("empresa", empresa);
    q.setParameter("usuario", usuario);
    q.setParameter("senha", senha);
    resultado = q.list();
		
    if (resultado.size() == 1) {
       return true;	
    } else {
       return false;
    }
		
    session.flush();
    session.close();			
 
    } catch (HibernateException e) {
       throw new DAOException(e);
    }
}
_fs

Ou use a perfeitamente linda Criteria API

Criteria c = session.createCriteria( Usuario.class ).add( Expression.eq( "empresa", empresa ) ).add( Expression.eq( "usuario", usuario ) ).add( Expression.eq( "senha", senha ) );
List l = c.list();
L

Bagulho bom essa API hein?

Como vc disse LIPE, WW+VCITY+Hiber… Excitante!

Hehe…

_fs

hehe :smiley:

Não esqueça de baixar o plugin do WebWork
http://eclipsework.sourceforge.net/

Criado 28 de fevereiro de 2005
Ultima resposta 8 de mar. de 2005
Respostas 5
Participantes 5