GRAVE: Servlet.service() for servlet [appServlet] in context with path [/extensao] threw exception [Request processing failed; nested exception is java.lang.IllegalArgumentException: org.hibernate.hql.ast.QuerySyntaxException: Professor is not mapped [ SELECT p FROM Professor p]] with root cause
org.hibernate.hql.ast.QuerySyntaxException: Professor is not mapped [ SELECT p FROM Professor p]
Classes
ClasseProfessorpackagebr.newtonpaiva.extensao.model;importjavax.persistence.Entity;importjavax.persistence.GeneratedValue;importjavax.persistence.GenerationType;importjavax.persistence.Id;importjavax.persistence.Table;@Entity@Table(name="tb_professor")publicclassProfessor{@Id@GeneratedValue(strategy=GenerationType.IDENTITY)privateLongcod_professor;privateLongnom_nome;publicLonggetCod_professor(){returncod_professor;}publicvoidsetCod_professor(Longcod_professor){this.cod_professor=cod_professor;}publicLonggetNom_nome(){returnnom_nome;}publicvoidsetNom_nome(Longnom_nome){this.nom_nome=nom_nome;}}Classecontrollerpackagebr.newtonpaiva.extensao.controller;importjava.util.List;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.stereotype.Controller;importorg.springframework.ui.Model;importorg.springframework.web.bind.annotation.RequestMapping;importorg.springframework.web.bind.annotation.RequestMethod;importbr.newtonpaiva.extensao.model.Professor;importbr.newtonpaiva.extensao.model.ProfessorRepository;@Controller@RequestMapping("professores")publicclassProfessorController{@AutowiredProfessorRepositoryrepository;@RequestMapping(method=RequestMethod.GET)publicStringindex(Modelmodel){List<Professor>listaProfessores=repository.listar();model.addAttribute("listaProfessores",listaProfessores);return"professores";}}ClasseRepositorypackagebr.newtonpaiva.extensao.model;importjava.util.List;importjavax.persistence.EntityManager;importjavax.persistence.PersistenceContext;importorg.springframework.stereotype.Repository;@RepositorypublicclassProfessorRepository{@PersistenceContextprivateEntityManagermanager;/** * Lista todos os professores */@SuppressWarnings("unchecked")publicList<Professor>listar(){returnmanager.createQuery("SELECT p FROM Professor p").getResultList();}/** * Lista todos os professores por nome */@SuppressWarnings("unchecked")publicList<Professor>listarNome(Stringprofessor){returnmanager.createQuery("SELECT p FROM Professor p WHERE p.nom_nome LIKE '%"+professor+"%' ").getResultList();}}
Estranho, eu tinha certeza que isso ia funcionar, porque o erro que tá dando é por que o EntityManager não tá achando a classe Professor como entidade. Experimenta apagar a tag <class>...</class>, e colocar isso daqui no lugar:
Ah, eu vi agora que você tá usando spring (pela tag do post). Para fazer as entidades serem descobertas automaticamente, o esquema é um pouco diferente do Java EE. Aqui tem um guia:
Você tem que configurar um negócio chamado “packagesToScan”, pelo que eu vi aqui. Não tenho muita familiaridade com Spring, mas foi isso que eu encontrei pesquisando no Google.