Bom dia!
Estou com o seguinte erro quando realizo a query do método buscaPessoaPorUsuario do PessoaDao:
Hibernate: select usuario0_.id as id1_4_, usuario0_.cadastroAtivado as cadastro2_4_, usuario0_.dataCadastro as dataCada3_4_, usuario0_.email as email4_4_, usuario0_.senha as senha5_4_ from Usuario usuario0_ where usuario0_.email=? mar 24, 2020 11:08:25 AM org.apache.catalina.core.StandardWrapperValve invoke SEVERE: Servlet.service() for servlet [dispatcher] in context with path [/controledepeso] threw exception [Request processing failed; nested exception is java.lang.IllegalArgumentException: org.hibernate.hql.internal.ast.QuerySyntaxException: pessoa is not mapped [select p from pessoa p where usuario_id = :usuario_id]] with root cause org.hibernate.hql.internal.ast.QuerySyntaxException: pessoa is not mapped
Classe LoginController
@Controller
public class LoginController {
@Autowired
private UsuarioDAO usuarioDao;
@Autowired
private PessoaDAO pessoaDao;
@RequestMapping("efetuaLogin")
public String efetuaLogin(Usuario usuario, HttpSession session, Model model) {
System.out.println("Acessando Login");
Usuario usuariologado = (Usuario) usuarioDao.loadUserByUsername(usuario.getEmail());
if (usuariologado != null) {
Pessoa pessoa = pessoaDao.buscaPessoaPorUsuario(usuariologado);
System.out.println(pessoa.getNome());
session.setAttribute("usuarioLogado", pessoa);
return "redirect:meusDados";
} else {
System.out.println("Usuário não existe");
return "cadastro/form-login";
}
}
}
Classe PessoaDao
@Repository
public class PessoaDAO {
@PersistenceContext
private EntityManager manager;
public void save(Pessoa pessoa) {
manager.persist(pessoa);
}
public Pessoa findOne(Integer id) {
return manager.find(Pessoa.class, id);
}
public Pessoa buscaPessoaPorUsuario(Usuario usuario) {
Pessoa pessoa = (Pessoa) manager.createQuery("select p from pessoa p where usuario_id = :usuario_id", Pessoa.class)
.setParameter("usuario_id", usuario.getId())
.getResultList();
return pessoa;
}
}
Configuração do banco
@EnableTransactionManagement
public class JPAConfiguration {
@Bean
public LocalContainerEntityManagerFactoryBean entityManagerFactory() {
LocalContainerEntityManagerFactoryBean em = new LocalContainerEntityManagerFactoryBean();
em.setDataSource(dataSource());
em.setPackagesToScan(new String[] {"br.com.moreira.controledepeso.model"} );
JpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
em.setJpaVendorAdapter(vendorAdapter);
em.setJpaProperties(additionalProperties());
return em;
}
@Bean
public DataSource dataSource() {
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://localhost:3306/controlepeso?serverTimezone=UTC");
dataSource.setUsername("admin");
dataSource.setPassword("");
return dataSource;
}
private Properties additionalProperties() {
Properties properties = new Properties();
properties.setProperty("hibernate.hbm2ddl.auto", "update");
properties.setProperty("hibernate.dialect", "org.hibernate.dialect.MySQLDialect");
properties.setProperty("hibernate.show_sql", "true");
return properties;
}
@Bean
public PlatformTransactionManager transactionManager(EntityManagerFactory emf) {
JpaTransactionManager transactionManager = new JpaTransactionManager();
transactionManager.setEntityManagerFactory(emf);
return transactionManager;
}
}
O mapeamento das entidades não está sendo realizado no setPackagesToScan apontando para as entidades do pacote model?