Método de Consulta via hibernate [resolvido]

6 respostas
V

Pessoal gostaria de qual método do hibernate session me retorna um objeto específico do meu banco e qual método me permite retorna uma lista de objetos com um critério específico

exemplo

public Usuario consultarUsuario(String userId);

public List consultarListaUsuario(String nome);

agradeço a ajuda.

6 Respostas

romarcio

Um unico usuario buscando pelo email:

public Usuario findByEmail(String email) { return (Usuario) getSession().createCriteria(Usuario.class) .add(Restrictions.eq("email", email)).uniqueResult(); }

Uma lista de usuarios buscando pelo 1° nome:

public List<Usuario> findByFirstName(String firstName) { return getSession().createCriteria(Usuario.class) .add(Restrictions.eq("firstName", firstName)).list(); }

Restrictions.eq("firstName", firstName) -> O 1° parâmetro faz referencia ao seu mapeamento, deve ser igual ao nome dado no mapeamento. O 2° é o parâmetro recebido no método.

V

Tá pedindo pra criar o método getSession.Quando eu troco getSession por session apresenta esse erro.

Exception in thread "main" org.hibernate.QueryException: could not resolve property: idusuario of: br.com.simuladoOnline.negocio.entidades.Endereco
at org.hibernate.persister.entity.AbstractPropertyMapping.propertyException(AbstractPropertyMapping.java:44)
at org.hibernate.persister.entity.AbstractPropertyMapping.toType(AbstractPropertyMapping.java:38)
at org.hibernate.persister.entity.AbstractEntityPersister.getSubclassPropertyTableNumber(AbstractEntityPersister.java:1379)
at org.hibernate.persister.entity.BasicEntityPropertyMapping.toColumns(BasicEntityPropertyMapping.java:31)
at org.hibernate.persister.entity.AbstractEntityPersister.toColumns(AbstractEntityPersister.java:1354)
at org.hibernate.loader.criteria.CriteriaQueryTranslator.getColumns(CriteriaQueryTranslator.java:434)
at org.hibernate.loader.criteria.CriteriaQueryTranslator.getColumnsUsingProjection(CriteriaQueryTranslator.java:394)
at org.hibernate.criterion.SimpleExpression.toSqlString(SimpleExpression.java:45)
at org.hibernate.loader.criteria.CriteriaQueryTranslator.getWhereCondition(CriteriaQueryTranslator.java:334)
at org.hibernate.loader.criteria.CriteriaJoinWalker.(CriteriaJoinWalker.java:90)
at org.hibernate.loader.criteria.CriteriaJoinWalker.(CriteriaJoinWalker.java:59)
at org.hibernate.loader.criteria.CriteriaLoader.(CriteriaLoader.java:69)
at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1554)
at org.hibernate.impl.CriteriaImpl.list(CriteriaImpl.java:283)
at org.hibernate.impl.CriteriaImpl.uniqueResult(CriteriaImpl.java:305)
at br.com.simuladoOnline.persistencia.RepositorioEndereco.consultarEndereco(RepositorioEndereco.java:57)
at br.com.simuladoOnline.teste.Teste1.main(Teste1.java:22)

e o método tá assim

public Endereco consultarEndereco(String idUser) {

		Endereco endereco;

		session = CreateSessionFactory.openSession();
		tx = session.beginTransaction();

		return (Endereco) session.createCriteria(Endereco.class).add(
				Restrictions.eq("idusuario", idUser)).uniqueResult();

		
	}
julianom

Oi,

Aqui vc acha tudo sobre Session: http://ajava.org/online/hibernate3api/org/hibernate/Session.html

O id vc poderia buscar assim:

// Obtém um usuário com o id especificado, ou null se ele não existe.
public Usuario findById(Integer id)
{
    getSession().get(Usuario.class, id);
}

ou

// Obtém um usuário com o id especificado, se ele existir. Se não existir,  erro.
public Usuario findById(Integer id)
{
    getSession().load(Usuario.class, id);
}

flw. :smiley:

julianom

Oi,

Vendo o erro, parece que não há um campo idusuario na classe Endereço.
Vc está pesquisando em um campo não presente na classe de entidade, deve ser por isso
que está dando esse erro.

flw

V

vlw cara era só o idUsuario q tava errado
vlw mesmo vou sacar essa página q vc
me passou pq preciso conhecer mas sobre
oq fazer no hibernate.

julianom

Oi,

Bota um [RESOLVIDO] no final do título do tópico, na primeira mensagem.

vlw.

Criado 4 de fevereiro de 2011
Ultima resposta 4 de fev. de 2011
Respostas 6
Participantes 3