[Resolvido] Java. Erro ao enviar um comando de sql através de hibernate, para banco de dados postgresql

9 respostas
caciara.hedlund

Olá Pessoal!
Estou precisando de uma ajuda de vocês.
Estou desenvolvendo um sistema Java Web.
Criei toda a conexão através de hibernate. A conexão com o banco de dados foi com sucesso.
Criou uma entidade certa, conforme a tabela no banco de dados.
Porém, quando envio uma consulta super simples, para testar. Ele apresenta uma mensagem de erro, ao qual não consegui identificar o problema.
Ele diz que tem um token inesperado, mas estou enviado uma consulta simples: “SELECT * FROM usuario”
Por favor, poderiam me dar alguma luz. Segue abaixo uma imagem com o erro.
Desde já, agradeço muito. :blush::blush:
Abraço. Caciara

Caso ficar ruim a visualização:

Listening for transport dt_socket at address: 9009
    Advertência:   StandardWrapperValve[default]: Servlet.service() for servlet default threw exception
    java.lang.IllegalArgumentException: org.hibernate.hql.internal.ast.QuerySyntaxException: unexpected token: * near line 1, column 8 [SELECT * FROM usuario]

9 Respostas

R

Olá, provavelmente você deveria efetuar um select desta maneira select u from Usuario u;
Pois o hibernate trabalha com objetos.
Seria como usar uma variável u para pegar os atributos da sua Classe Java Usuario.

caciara.hedlund

hum. achei que faria script normal. E se por exemplo eu gostaria de selecionar alguns dados, renomear a tabela.
Como assim: SELECT * FROM usuario AS u WHERE u.“Login”= ‘xx’ AND u.“Senha”= ‘xx’;
Como faria, vc saberia me informar, algum site, material, aonde ensina sobre isso, para eu estudar.
Desde já, agradeço muito sua ajuda Renato. Abraço.

jallisson_jallis

que aprender java web? olha link abaixo:
T2Ti Web

staroski

SQL só funciona com queries nativas.
Você deveria usar HQL.
Posta o código de sua implementação.

R

se você precisa comparar se o atributo é igual ao parâmetro que o método recebe.
Exemplo:
select u from Usuario u where u.login = :Plogin and u.senha = :Psenha;
e setar os parâmetros senha e login.
Exemplo :
query.setParameter(“login”, Plogin);
query.setParameter(“senha”, Psenha);

caciara.hedlund

Pessoal, segui conforme orientações de vocês, e executou com sucesso.

Ficou desta maneira:

String sql = (" SELECT u FROM Usuario u "
                    + " WHERE u.login = " +  "'" + usu +  "'" 
                    + " AND u.senha = " + "'" +  senha +  "'" );
      
     
     Query query = getEntityManager().createQuery(sql, Usuario.class);

Agradeço muito ajuda de vocês.
Grande abraço.
Caciara

malucocelo

Use setParameter para adicionar os parâmetros, ao invés de concatenar, é mais seguro.

caciara.hedlund

Certo, obrigada Malu!!

raphaeloneves

Essa forma de uso é vulnerável à SQL Injection. Use named paramaters.

".. u.login = :login and u.senha = :senha";
    query.setParameter("login", valueLogin);
    query.setParameter("senha", valueSenha);
Criado 10 de julho de 2017
Ultima resposta 11 de jul. de 2017
Respostas 9
Participantes 6