Tenho uma tabela que tem id, nome, sobrenome e endereço.
Preciso validar em HQL se o nome e sobrenome for igual retornar falso se for diferentes retorna verdadeiro. Eu já tenho uma função que insere, preciso fazer esta validação que manda para a minha função broquear. E não estou conseguindo. Fiz uma função em Criteria, mas quando colocava o mesmo nome que estava no banco exemplo Maria, ele também não deixa inserir =(
Obs: Eu programo faz pouco tempo e se alguém poder me indicar sites para estudar os dois…
[]s…
Oie Cristian… tdb?
Valeu por responder rápido… então é essa a lógica, não permitir inserir quando tenha um cadastro igual com nome e sobrenome iguais, mas preciso fazer isso em HQL ou Criteria… para verificar so banco se já existe o nome=“Cristian” e sobrenome=“Palma”.
fiz essa função aqui antes…
[code] public boolean isNomeExiste(String id, String nome, String sobrenome) {
System.out.println(“entrou na verificação”);
Criteria criteria = this.session.createCriteria(Pessoa.class);
if (isNullOrEmpty(id)) {
System.out.println(“if”);
criteria.add(Restrictions.and(Restrictions.eq(“id”, nome),Restrictions.eq(“id”, sobrenome)));
} else {
System.out.println(“else”);
LogicalExpression and = Restrictions.and(
Restrictions.eq(“id”, nome),Restrictions.ne(“id”, id));
criteria.add(and);
Mas não entendi muito bem a função, se alguém puder me explicar. Então assim ela bloqueia a inserção de nomes iguais exemplo: já tenho no meu banco Cristian Palma e estou tentando inserir Cristian Nogueira, retorna true que já existe o nome…e não insere… hehehe
[]s…
[quote=CristianPalmaSola10]Não entendi diretiro, se ja exisitir um Cristian no banco de dados voce naum que deixar inserir outro é isso?
ou o cara que eu to tentando cadastrar naum poder ter o nome e o sobrenome iguais
se for isso faz um if
if(nome.toLowerCase().equals(sobrenome.toLowerCase())
{
//nome e sobrenome iguais
}
else
{
//nome e sobrenome diferentes
}
[quote=jakefrog]Como assim função? HQL não faz função, apenas consultas.
Pq vc não faz isso em duas etapas? Primeiro consulta e depois insere ou não?[/quote]
Isso mesmo, faço uma coisa e depois a outra… desculpe o erro ao me expressar ou horrivel disso, acredito que por não ter tanto conhecimento…
Então expliquei melhor o que preciso no comentario acima não tinha visto, o seu sorry =(. Será que pode me ajudar?
Aproveitando para dizer que aquele código não estava inserindo hehehe… mexi em algo que não sei oque e parou kkkk…
[]s…
Galera consegui resolver temporariamente o meu problema usando SQLQuery, porém continuo precisando usar na minha função em HQL ou Criteria, pois o SQLQuery, fica focado somente no banco SQL…
Se alguém puder me ajudar?.. Abaixo minha função que preciso implementar =) …
public boolean isNomeExiste(String nome, String sobrenome) {
if (isNullOrEmpty(nome)) {
return false;
}
SQLQuery consulta = session
.createSQLQuery("select * from tb_pessoa pessoa where pessoa.nome= :nome and pessoa.sobrenome = :sobrenome");
consulta.setString("nome", nome);
consulta.setString("sobrenome", sobrenome);
@SuppressWarnings("unchecked")
Collection<Pessoa> depList = consulta.list();
//System.out.println(nome+"nome"+ sobrenome+"sobrenome");
return (depList.isEmpty()) ? false : true;
[]s… :lol:
Galera consegui…
Um amigo, me ensinou uma query HQL básica dai consegui validar a função, como eu queria… Segue código com comentários e sysout!
public boolean isNomeExiste(String id, String nome, String sobrenome) {//colocado id para validar quando é edição pois tem o valor do id
System.out.println("id "+id);
if (isNullOrEmpty(id)) {
System.out.println("entrou aqui no if");
Query query = this.session.createQuery("SELECT dep.nome FROM Pessoa as dep WHERE dep.nome = :nome AND dep.sobrenome = :sobrenome");//como aqui esta inserindo não fazemos validacao do id, não é necessário.
query.setString("nome", nome);//seta os valores as variaveis
query.setString("sobrenome", sobrenome);
@SuppressWarnings("unchecked")
Collection<Pessoa> depList = query.list();
System.out.println("valor isEmpty"+depList.isEmpty());
return (depList.isEmpty()) ? false : true; //retorna o resultado boolean para a minha função
}
if(id != null){
System.out.println("entrou diferente de null");
Query query = this.session.createQuery("SELECT dep.nome FROM Pessoa as dep WHERE dep.nome = :nome AND dep.sobrenome = :sobrenome AND dep.id <> :id");
query.setString("id",id);
query.setString("nome", nome);
query.setString("sobrenome", sobrenome);
@SuppressWarnings("unchecked")
Collection<Pessoa> depList = query.list();
System.out.println("valor isEmpty"+depList.isEmpty());//para ver a resposta do true ou false
return (depList.isEmpty()) ? false : true;
}
System.out.println("fora dos ifs");
return false;}