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

Erro na query no metodo listar

boa tarde, ao criar o método listar() na classe ProdutoDAO esta dando um erro. codigo da classe ProdutoDAO:

@Repository
@Transactional
public class ProdutoDAO {

    @PersistenceContext
    private EntityManager manager;

    public void grava(Produto produto){
        manager.persist(produto);
    }

    public List<Produto> listar(){
        return manager.createQuery("select p from Produto p", Produto.class).getResultList();
    }
}

Na query, o "Produto" esta dando como erro, como se ele não reconhecesse o produto.

7 respostas

Boa tarde Joao, pode colocar sua classe toda?

Boa tarde Guilherme, a classe ProdutoDAO é apenas isso, oque tem a mais é o package e os imports.

package org.casadocodigo.DAO;

import org.casadocodigo.Model.Produto;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;

import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import java.util.List;

@Repository
@Transactional
public class ProdutoDAO {

    @PersistenceContext
    private EntityManager manager;

    public void grava(Produto produto){
        manager.persist(produto);
    }

    public List<Produto> listar(){
        return manager.createQuery("select p from Produto p", Produto.class).getResultList();
    }
}

o erro que aparece é : "Can't resolve symbol 'Produto'. Inspection info: This inspection controls whether the Persistence QL Queries are error-checked". Onde tem "Select p from Produto p", é que ocorre o erro.

Estranho porque vc está importando produto. Tenta dar um clean no projeto e no tomcat

estou usando o Wildfly como servidor

De qualquer forma dê um clean no servidor e no projeto.

Tem algum motivo especial para adotar o wildfly?

solução!

Consegui solucionar, tive que adicionar o arquivo de configuração do hibernate "hibernate.cfx.xml" e adicionar a tag de mapping para mapear as classes como entidades. Porem tive que fazer o metodo listar() em ProdutoController diferente de como foi feito na aula:

public ModelAndView listar(){
        System.out.println("buscando os produtos");
    List<Produto> produtos = new produtoDAO.listar();

        return null;
    }

como tive que fazer:

public ModelAndView listar(){
        System.out.println("buscando os produtos");

        List<Produto> produtos = new ArrayList<Produto>();
        produtos = produtoDAO.listar();

        return null;
    }

Porem tudo solucionado. Obrigado

Legal Joao! Posso apenas fazer uma considerações? Quando usamos o spring, podemos aproveitar todos seus módulos como MVC, IoC, Data etc.. nesse caso não precisamos do Wildfly e sim apenas do tomcat. E outro detalhe é que o aconselhado é usar a especificação JPA ao invés do hibernate "puro". Mas são apenas dica!

Abraços e bons estudos