E ae galera, estou com uma duvida basica do hibernate
eu tenho uma action do struts 2 que chama uma Dao onde eu já consiguo inserir remover e alterar e lista tudo
mas estou com dificuldades na hora de fazer uma busca
no caso eu estou usando o findAll para pegar todos os resultados da tabela
public List findAll() throws Exception {
return HibernateUtil.currentSession().createCriteria(Marca.class).list();
}
até ai blz funciona ai eu criei ouro método para busca com o seguinte codigo
public List findByMarca(Marca entity) throws Exception
{
return HibernateUtil.currentSession().createCriteria(entity.getClass()).list();
}
ou seja eu passo por parametro o objeto e faco o mesmo método mas nao dá certo… eu será que eu teria que mudar usar um Query? alguem da uma luz?! valeu
public List<Marca> findByMarca(Marca entity) throws Exception
{
return HibernateUtil.currentSession().createCriteria(entity.getClass()).list();
}
Esse método faz a mesma coisa que o primeiro… não é essa a intenção?
Obrigado pela resposta
Pois é, mas o primeiro retorna apenas um objeto pelo id do parametro, eu tava precisando passar um objeto Marca e retornar uma Lista que tenha a letra F, ou seja uma busca parametrizada onde cada campo que nao seja null seja verificado na query… e dakela maneira que está ali não funcionou ele retorna todos os registros da tabela
acredito que tenha que utilizar alguma outra função eu não sei direito por exemplo a Query do hibernate ou é feito de outra maneira
Ali voce só passa o Class do objeto marca assim como no primeiro método (findAll).
Se voce quiser usar um objeto como exemplo voce tem que pesquisar sobre o Example do Hibernate… eu nunca usei essa função mas acho que pode resolver seu problema.
E ae pessoal ainda nao consegui resolver meu problema no DAO!!
tentei utilizar o example
fiz assim
@SuppressWarnings("unchecked")
public List<Marca> findMarcas( Marca entity) throws Exception {
//aqui ta imprimindo certo a descricao por exemplo Ford
System.out.println(entity.getDescricao());
//aqui uso o example passando a marca que esta na action do struts 2..
Example example = Example.create(entity).excludeZeroes().ignoreCase().enableLike();
// aqui o resultado da sessao passando adicionando o example no Criteria do hibernate
List<Marca> results = HibernateUtil.currentSession().createCriteria(Marca.class).add(example).list();
return results;
}
ele nao da erro mas a HQL fica da seguinte forma
// o 2 é o parametro que vem do form do struts
2
//essa eh a hql pode ver que ela simplesmente faz Where 1=1 ou seja ele ignora o example e nao compara minha descricao, e traz toda minha tabela marca
Hibernate:
select
this_.id_marca as id1_4_0_,
this_.descricao as descricao4_0_
from
marca this_
where
(
1=1
)
alguma solução??