4
respostas

Código para Pesquisa JPQL não compila.

Mensagen ERRO:

java.lang.IllegalArgumentException: org.hibernate.QueryException: Unable to resolve path [m.Conta], ..... org.hibernate.QueryException: Unable to resolve path [m.Conta], unexpected token [m] [select m from br.com.wpcursos.financas.modelo.Movimentacao where m.Conta.id=6]

` package br.com.wpcursos.financas.modelo;

import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id;

@Entity public class Conta {

@Id // Informa qual campo será a chave primaria

@GeneratedValue(strategy = GenerationType.IDENTITY) 
private Integer id;
private String titular;
private String numero;
private String banco;
private String agencia;

public Integer getId() {
    return id;
}

public void setId(Integer id) {
    this.id = id;
}

Classe de TESTE da JPQL package br.com.wpcursos.finacas.teste;

import java.util.List;

import javax.persistence.EntityManager; import javax.persistence.Query;

import br.com.wpcursos.financas.modelo.Movimentacao; import br.com.wpcursos.financas.util.JPAUtil;

public class TesteJPQL {

public static void main(String[] args) {

    EntityManager em = new JPAUtil().getEntityManager();


    em.getTransaction().begin();

    //    criterio usando classe e atrinuto e não campo

    String jpql = "select m from Movimentacao  where m.Conta.id=6";

    Query query = em.createQuery(jpql);

    List<Movimentacao> resultado = query.getResultList();  // Notei que esse 

metodo query.getResultList(); fica grifado, como se não tivesse importado a biblioteca.

    for (Movimentacao movimentacao : resultado) 

4 respostas

No meu código notei que o método query.getResultList(); aparece grifado, como se não tivesse importado a biblioteca. Ja chequei o atributo da classe, id em minusculo, porém, sempre retorna este erro. Ao tentar comparar com a Transcrição da aula, as biliotecas não aparecem na transcrição.

Olá Jose, tudo bem?

Olhando a mensagem de erro, ela informa que não conseguiu resolver o caminho "m.Conta", não conseguindo entender o token "m".

Vendo o seu JPQL, me parece que faltou dar o alias "m" à entidade Movimentacao. Ou seja, deveria ficar assim:

String jpql = "select m from Movimentacao m where m.Conta.id=6";

Veja se assim funciona.

Abraços!

Agora o erro passou pára:

could not resolve property: Conta of: br.com.wpcursos.financas.modelo.Movimentacao [select m from br.com.wpcursos.financas.modelo.Movimentacao m where m.Conta.id=6]

Aff!!

José,

Na classe Movimentacao, qual é o nome da propriedade relativa à conta? O nome no JPQL precisa estar rigorosamente igual ao nome da propriedade.

Se estiver seguindo a convenção, o nome deve ser "conta" em vez de "Conta".

Se ainda persistir o erro, poste aqui por favor o código-fonte da classe Movimentacao.