7
respostas

Erro ao cadastrar Produto Erro 500

Boa noite, acho que o curso de spring deveria ser regravado para ser atualizado algumas dependencias no maven, pois estão antigas, logo ao fazermos o curso se deparamos com muitos erros como: versão do mysql, dialeto do mysql e as outras dependencias. Aí complica para nossa curva de aprendizagem.

Segue alguns erros ao cadastrar produtos:

  • javax.servlet.ServletException: Servlet.init() for servlet [dispatcher] threw exception
  • org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class br.com.casadocodigo.loja.conf Unable to resolve name [org.hibernate.dialect.MySQL8Dialect] as strategy [org.hibernate.dialect.Dialect] org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1568)
  • org.hibernate.boot.registry.selector.spi.StrategySelectionException: Unable to resolve name [org.hibernate.dialect.MySQL8Dialect]

Classe JPAConfiguration:

package br.com.casadocodigo.loja.conf;

import java.util.Properties;
import javax.persistence.EntityManagerFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.jdbc.datasource.DriverManagerDataSource;
import org.springframework.orm.jpa.JpaTransactionManager;
import org.springframework.orm.jpa.JpaVendorAdapter;
import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter;
import org.springframework.transaction.annotation.EnableTransactionManagement;

@EnableTransactionManagement
public class JPAConfiguration {

    @Bean
    public LocalContainerEntityManagerFactoryBean entityManagerFactory() {
        LocalContainerEntityManagerFactoryBean factoryBean = new LocalContainerEntityManagerFactoryBean();

        JpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
        factoryBean.setJpaVendorAdapter(vendorAdapter);

        DriverManagerDataSource dataSource = new DriverManagerDataSource();
        dataSource.setUsername("felipe");
        dataSource.setPassword("123456");
        dataSource.setUrl("jdbc:mysql://localhost:3306/casadocodigo");
        dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");

        factoryBean.setDataSource(dataSource);

        Properties props = new Properties();
        props.setProperty("hibernate.dialect", "org.hibernate.dialect.MySQL5Dialect");
        props.setProperty("hibernate.show_sql", "true");
        props.setProperty("hibernate.hbm2ddl.auto", "update");
        factoryBean.setJpaProperties(props);

        factoryBean.setPackagesToScan("br.com.casadocodigo.loja.models");

        return factoryBean;
    }

    @Bean
    public JpaTransactionManager transactionManager(EntityManagerFactory emf) {
        return new JpaTransactionManager(emf);
    }
}
7 respostas

Fala ai Felipe, de boa ?

Cara, o problema é que você tá com o mysql 8 instalado na sua máquina, as dependencias do curso não estão preparadas para atende-lo.

Você pode atualizar as libs ou retornar a versão do banco para a 5.7

Como faço pra saber as novas versões das libs e assim colocar no arquivo para o marven atualizar?

Um local legal para ver é no repositorio do maven:

https://mvnrepository.com/

Já pedi para o instrutor também dar uma olhada e atualizar as dependencias do curso

Olá Matheus eu já tinha visto o repositório e inclusive eu ja tentei atualizar as dependencias no xml porém dá muitos erros, infelizmente eu dei uma pausa no curso e to retomando o curso de android poque isso atrapalha muito o nosso aprendizado.

Boa Tarde, também não consigo sair desta parte do curso, já atualizei as dependências do MySQL e o erro persiste.

Pode me ajudar fazendo favor.

Verdade Rodrigo, eu simplesmente desistir do curso. O curso em si tá ultrapassado e desatualizado e o suporte não ajuda a gente de forma nenhuma, preferir continuar o curso de android.

seu stacktrace mostra [org.hibernate.dialect.MySQL8Dialect] como dialeto, mas sua configuração mostra MYSQL5. verifique se não tem algum xml perdido ou alguma outra configuração pedindo esse dialeto.