Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Java.lang.IllegalArgumentException: org.hibernate.hql.internal.ast.QuerySyntaxException:

Pessoal, boa tarde!

Finalizei a aula da criação do método detalhe na classe ProdutoController, porém ao tentar abrir a pagina da detalhe.jsp através da lista, me aparece essa exception reclamando da query.

Por gentileza, conseguem me ajudar?!

java.lang.IllegalArgumentException: org.hibernate.hql.internal.ast.QuerySyntaxException: unexpected token: . near line 1, column 69 [select p from br.com.casadocodigo.loja.models.Produto p join fecth p.precosprecos where p.id= :id]

DAO:
public Produto find(Integer id) {
        return manager.createQuery("select distinct(p) from Produto p join fetch p.precos preco where p.id = :id",
                Produto.class).setParameter("id", id).getSingleResult();
    }
4 respostas

Thiago, tudo bem ?

Esse id que você recebe, não é o id do livro ? Ou realmente é do preço ?

Olá, Matheus, tudo bem e com você?

Esse id é utilizado no livro e no preço. No banco de dados eu tenho duas tabelas: Produto com a coluna id. Produto_precos com a coluna produto_id.

Ola Thiago, tudo bem ?

Por algum motivo estranho o parse pra hql gerou p.precosprecos depois do join:

unexpected token ... [select p from br.com.casadocodigo.loja.models.Produto p join fecth p.precosprecos where p.id= :id]

Tente remover o alias que não é utilizado depois de p.precos.

public Product find(Integer id) {
    TypedQuery<Product> query = manager
        .createQuery("select distinct(p) from Product p join fetch p.prices where p.id=:id", Product.class)
        .setParameter("id", id);

    return query.getSingleResult();
}

Espero ter ajudado. Abraço!

solução!

Rafael, boa tarde!

Já tinha tentado retirar, porém não resolveu.Acabei conseguindo da seguinte forma: Fechei o eclipse. Apaguei a pasta .m2. Abri o eclipse, deixei atualizar e dei um limpar no tomcat.

Agradeço ajuda.

Abraço.