Galera, estou com uma duvida.
Estou aprendendo usar o framework hibernate e trocando meus projetos atuais para usar com o hibernate,
mas alguns casos nao era pra ser usado SQL e eu acabei usando, podem me ajudar.
Qual a maneira de tirar o sql desse codigo e usar 100% hibernate.
public static List pessoasByName(String nome) {
int status = 0;
session = ConnectionFactoryHibernate.getInstance();
// "ALEXANDRE FERREIRA"
Query query = session.createQuery("from Pessoa where nome like '"+nome+"'");
List lista = query.list();
}
if(lista.isEmpty()}
{
// %ALEXANDRE FERREIRA%
query = session.createQuery("from Pessoa where nome like '%"+nome+"%'");
lista = query.list();
}
session.close();//não sei se precisa...
return lista;
uma vez eu li sobre o tal matchmode.anywhere, cara mais juro q to a dias tentando achar na documentacao e no google e nao encontro =/
Agradeco a atencao.!
Utilize a Criteria do Hibernate.
Com ela você não precisa usar expressões SQL. Neste seu exemplo, ficaria desta maneira :
Criteria criterios = session.createCriteria(ClasseParaConsulta.class);
criterios.add(Expression.like(?nome?, nome) );
criterios.list();
Pesquise na internet sobre Criteria no Hibernate.
Abraço.
Luis, obrigado lek…vou testar já…flw!
logo logo trago a resposta
Lipe, não vi a diferenca nao…vc poderia ser mais claro?
Estou com outra duvida agora =/
Se eu passar o nome Alexandre Ferreira o metodo abaixo dava split nos " " e colocava and ou or dependendo do meu argumento e concatenava uma sql pra mim.
private static String arrayNomeSub(String nome, int sub, String orAnd) {
String[] array_nome = nome.split(" ");
String sql_aux = "";
for (int i = 0; i < array_nome.length; i++) {
if (array_nome[i].length() > 3) {
if (sub != 0)
array_nome[i] = array_nome[i].substring(0, sub);
sql_aux = sql_aux + " " + orAnd + " nome like '%"
+ array_nome[i] + "%'";
}
}
if (orAnd.equals("and"))
return sql_aux.substring(18);
return sql_aux.substring(17);
E depois eu usava ele neste metodo abaixo:
public static List pessoasByName(String nome) {
query = session.createQuery("from Pessoa where nome like '%"
+ arrayNomeSub(nome, 3, "and"));
lista = query.list();
return lista;
}
Minha duvida é como eu faco para da um split nos espacos e colocar and ou or dependendo do caso?