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

Projeto String MVC - Não gera entidade no MySQL e não faz persistência.

Olá, estou enfrentando o seguinte problema no curso de Spring MVC na parte de cadastro deprodutos.

A aplicação funciona normalmente no front, o preenchimento do formulário de cadastro de produto e a exibição da mensagem de salvo com sucesso após fazer o submit do formulário!

Ocorre que no back, o Hibernate não gera a tabela no BD MySQL para realizar a persistência do produto, e ele não exibe nenhum erro no log quando isso acontece, e as informações são recuperadas do formulário de forma correta, pois no método gravar do controller de produto ele imprime o objeto de produto no log normalmente.

O que pode estar acontecendo de errado ?

3 respostas

Fala ai Bruno, de boa ?

Consegue passar para gente a classe de configuração que fez para ter acesso ao bd ?

Consigo sim!

Segue abaixo:

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);

        /***         
         * Configuração de conexão com o Banco de Dados
         */
        DriverManagerDataSource dataSource = new DriverManagerDataSource();
        dataSource.setUsername("root");
        dataSource.setPassword("masterkey");
        dataSource.setUrl("jdbc:mysql://localhost:3306/casadocodigo");
        dataSource.setDriverClassName("com.mysql.jdbc.Driver");

        factoryBean.setDataSource(dataSource);

        /***
         * Configuração do Hibernate
         */
        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);
    }

}
solução!

Fala Bruno, tudo bem ?

Olhando o código não parece ter nada de errado. Mesmo assim, tendo o mesmo projeto do curso completo na minha máquina, substituí meu código de configuração de acesso ao banco pelo que você postou acima para testar, e por aqui a criação das tabelas ocorreu sem problemas com seu código.

Algo externo a essa classe deve estar impactando na não geração das tabelas. Verifique se todas as classes que representam seu modelo/entidades estão anotadas com @Entity (entre outras Annotations da JPA). Verifique também se o pacote onde se encontram é mesmo o br.com.casadocodigo.loja.models.

Caso não consiga encontrar outra possível causa para o problema. Tente apagar o conteúdo da pasta target do maven. E realizar um clique direito no projeto > Maven > Update Project > Force Update for Snapshots and Releases. Tente também remover a instância da app implantada no server, limpar o tomcat (clean e clean tomcat working directory), antes de realizar a etapa anterior.

Caso seja possível (se nada disso funcionar) compartilhe o código do projeto usando algum repositório no github para que possamos dar uma olhada mais a fundo no que pode estar acontecendo.

Espero ter ajudado. Abraço!