Solucionado (ver solução)

Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

Solucionado
(ver solução)
13
respostas

Erro 404 ao tentar salvar o livro

Ao clicar em cadastrar, gera erro 404...

HTTP Status 404 - /produto

type Status report

message /produto

description The requested resource is not available.

Apache Tomcat/8.5.8

Meu 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("root");
        dataSource.setPassword("java");
        dataSource.setUrl("jdbc:mysql://localhost/casadocodigo");
        dataSource.setDriverClassName("com.mysql.jdbc.Driver");

        factoryBean.setDataSource(dataSource);

        Properties properties = new Properties();
        properties.setProperty("hibernate.dialect", "org.hibernate.dialect.MySQL5InnoDBDialect");
        properties.setProperty("hibernate.hbm2dll.auto", "update");
        properties.setProperty("hibernate.show_sql", "true");
        factoryBean.setJpaProperties(properties);

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

        return factoryBean;
    }

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

Meu ProdutoDao:

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

E meu ProdutoController:

    @RequestMapping("/produto")
    public String gravar(Produto produto) {
        produtoDao.gravar(produto);
        return "/produto/ok";
    }

OBS.: Dei um show tables no BD, e verifiquei que a tabela não foi criada a tabela...

13 respostas

Oi Ewerton tudo bem? Pela mensagem de erro tudo indica que o seu método não foi acessado por meio da URL que você tentou. Poderia mandar a sua classe de controller para dar uma olhada?

Além disso, percebi que você deixou a senha do seu banco com o valor "java" é realmente essa senha? Eu pergunto pq geralmente deixamos sem. Portanto, veja se está dando algum tipo de exception no log também, pois ele costuma avisar com mais precisão o que está acontecendo. Caso estiver dando exception, manda também por favor, pois dessa forma fica mais fácil de identificar o problema.

Bom dia Alex! Tudo na paz! e com vc?

Meu Controller:

package br.com.casadocodigo.loja.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

import br.com.casadocodigo.loja.dao.ProdutoDao;
import br.com.casadocodigo.loja.modelo.Produto;

@Controller
public class ProdutoController {

    @Autowired
    private ProdutoDao produtoDao;

    @RequestMapping("/produto/form")
    public String form() {
        return "produto/form";
    }

    @RequestMapping("/produto")
    public String gravar(Produto produto) {
        produtoDao.gravar(produto);
        return "/produto/ok";
    }
}

A senha é "java " msm, é um BD somente para estudos...

O seu controller está ok, sem nenhum problema, estranho receber o 404... Se preferir pode mandar o projeto via github que eu dou uma olhada no que está acontecendo e te passo um feedback sobre o que ocorreu, pois pode ser algum pequeno detalhe de configuração, como por exemplo, uma annotation que está faltando, ou então, a própria view... Veja que pode ser diversos pontos, por isso eu acredito que seja melhor compartilhar o projeto.

Quando da algum problema geralmente o log avisa, ou seja, se eu executar o seu projeto, consigo ver de uma forma mais fácil o problema, pode ser?

Abraços.

Blz Alex! Segue link do projeto => https://drive.google.com/drive/folders/0B1n2t9Tjxu9GckdsZEowUGRxT2s?usp=sharing

Opa Ewerton vi o seu projeto aqui e percebi que na view você faz um action para "/produto" mude para action="/casadocodigo/produto" pois dessa forma será acessado a seguinte URL http://localhost:8080/casadocodigo/produtos da forma que estava antes estava indo com http://localhost:8080/produtos. Veja se funciona.

Mudei conforme vc me orientou, mas gerou outro erro:

HTTP Status 500 - Request processing failed; nested exception is javax.persistence.PersistenceException: org.hibernate.exception.SQLGrammarException: could not execute statement

type Exception report

message Request processing failed; nested exception is javax.persistence.PersistenceException: org.hibernate.exception.SQLGrammarException: could not execute statement

description The server encountered an internal error that prevented it from fulfilling this request.

exception

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is javax.persistence.PersistenceException: org.hibernate.exception.SQLGrammarException: could not execute statement
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:982)
    org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:648)
    org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
root cause

javax.persistence.PersistenceException: org.hibernate.exception.SQLGrammarException: could not execute statement
    org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:147)
    org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:155)
    org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:162)
    org.hibernate.internal.SessionImpl.firePersist(SessionImpl.java:772)
    org.hibernate.internal.SessionImpl.persist(SessionImpl.java:750)
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    java.lang.reflect.Method.invoke(Unknown Source)
    org.springframework.orm.jpa.SharedEntityManagerCreator$SharedEntityManagerInvocationHandler.invoke(SharedEntityManagerCreator.java:298)
    com.sun.proxy.$Proxy125.persist(Unknown Source)
    br.com.casadocodigo.loja.dao.ProdutoDao.gravar(ProdutoDao.java:19)
    br.com.casadocodigo.loja.dao.ProdutoDao$$FastClassBySpringCGLIB$$297b3d16.invoke(<generated>)
    org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)
    org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:721)
    org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)
    org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:99)
    org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:282)
    org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96)
    org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
    org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:656)
    br.com.casadocodigo.loja.dao.ProdutoDao$$EnhancerBySpringCGLIB$$354ce910.gravar(<generated>)
    br.com.casadocodigo.loja.controller.ProdutoController.gravar(ProdutoController.java:23)
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    java.lang.reflect.Method.invoke(Unknown Source)
    org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:220)
    org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:134)
    org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:116)
    org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)
    org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)
    org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)
    org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:963)
    org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:897)
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)
    org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:648)
    org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
root cause

org.hibernate.exception.SQLGrammarException: could not execute statement
    org.hibernate.exception.internal.SQLExceptionTypeDelegate.convert(SQLExceptionTypeDelegate.java:63)
    org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:42)
    org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:111)
    org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:97)
    org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:207)
    org.hibernate.dialect.identity.GetGeneratedKeysDelegate.executeAndExtract(GetGeneratedKeysDelegate.java:57)
    org.hibernate.id.insert.AbstractReturningDelegate.performInsert(AbstractReturningDelegate.java:42)
    org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2855)
    org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:3426)
    org.hibernate.action.internal.EntityIdentityInsertAction.execute(EntityIdentityInsertAction.java:81)
    org.hibernate.engine.spi.ActionQueue.execute(ActionQueue.java:623)
    org.hibernate.engine.spi.ActionQueue.addResolvedEntityInsertAction(ActionQueue.java:277)
    org.hibernate.engine.spi.ActionQueue.addInsertAction(ActionQueue.java:258)
    org.hibernate.engine.spi.ActionQueue.addAction(ActionQueue.java:303)
    org.hibernate.event.internal.AbstractSaveEventListener.addInsertAction(AbstractSaveEventListener.java:318)
    org.hibernate.event.internal.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:275)
    org.hibernate.event.internal.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:182)
    org.hibernate.event.internal.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:113)
    org.hibernate.jpa.event.internal.core.JpaPersistEventListener.saveWithGeneratedId(JpaPersistEventListener.java:67)
    org.hibernate.event.internal.DefaultPersistEventListener.entityIsTransient(DefaultPersistEventListener.java:189)
    org.hibernate.event.internal.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:132)
    org.hibernate.event.internal.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:58)
    org.hibernate.internal.SessionImpl.firePersist(SessionImpl.java:765)
    org.hibernate.internal.SessionImpl.persist(SessionImpl.java:750)
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    java.lang.reflect.Method.invoke(Unknown Source)
    org.springframework.orm.jpa.SharedEntityManagerCreator$SharedEntityManagerInvocationHandler.invoke(SharedEntityManagerCreator.java:298)
    com.sun.proxy.$Proxy125.persist(Unknown Source)
    br.com.casadocodigo.loja.dao.ProdutoDao.gravar(ProdutoDao.java:19)
    br.com.casadocodigo.loja.dao.ProdutoDao$$FastClassBySpringCGLIB$$297b3d16.invoke(<generated>)
    org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)
    org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:721)
    org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)
    org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:99)
    org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:282)
    org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96)
    org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
    org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:656)
    br.com.casadocodigo.loja.dao.ProdutoDao$$EnhancerBySpringCGLIB$$354ce910.gravar(<generated>)
    br.com.casadocodigo.loja.controller.ProdutoController.gravar(ProdutoController.java:23)
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    java.lang.reflect.Method.invoke(Unknown Source)
    org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:220)
    org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:134)
    org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:116)
    org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)
    org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)
    org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)
    org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:963)
    org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:897)
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)
    org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:648)
    org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
root cause

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'casadocodigo.produto' doesn't exist
    sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    java.lang.reflect.Constructor.newInstance(Unknown Source)
    com.mysql.jdbc.Util.handleNewInstance(Util.java:425)
    com.mysql.jdbc.Util.getInstance(Util.java:408)
    com.mysql.jdbc.SQLError.createSQLException(SQLError.java:943)
    com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3970)
    com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3906)
    com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2524)
    com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2677)
    com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2549)
    com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1861)
    com.mysql.jdbc.PreparedStatement.executeUpdateInternal(PreparedStatement.java:2073)
    com.mysql.jdbc.PreparedStatement.executeUpdateInternal(PreparedStatement.java:2009)
    com.mysql.jdbc.PreparedStatement.executeLargeUpdate(PreparedStatement.java:5098)
    com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1994)
    org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:204)
    org.hibernate.dialect.identity.GetGeneratedKeysDelegate.executeAndExtract(GetGeneratedKeysDelegate.java:57)
    org.hibernate.id.insert.AbstractReturningDelegate.performInsert(AbstractReturningDelegate.java:42)
    org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2855)
    org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:3426)
    org.hibernate.action.internal.EntityIdentityInsertAction.execute(EntityIdentityInsertAction.java:81)
    org.hibernate.engine.spi.ActionQueue.execute(ActionQueue.java:623)
    org.hibernate.engine.spi.ActionQueue.addResolvedEntityInsertAction(ActionQueue.java:277)
    org.hibernate.engine.spi.ActionQueue.addInsertAction(ActionQueue.java:258)
    org.hibernate.engine.spi.ActionQueue.addAction(ActionQueue.java:303)
    org.hibernate.event.internal.AbstractSaveEventListener.addInsertAction(AbstractSaveEventListener.java:318)
    org.hibernate.event.internal.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:275)
    org.hibernate.event.internal.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:182)
    org.hibernate.event.internal.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:113)
    org.hibernate.jpa.event.internal.core.JpaPersistEventListener.saveWithGeneratedId(JpaPersistEventListener.java:67)
    org.hibernate.event.internal.DefaultPersistEventListener.entityIsTransient(DefaultPersistEventListener.java:189)
    org.hibernate.event.internal.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:132)
    org.hibernate.event.internal.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:58)
    org.hibernate.internal.SessionImpl.firePersist(SessionImpl.java:765)
    org.hibernate.internal.SessionImpl.persist(SessionImpl.java:750)
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    java.lang.reflect.Method.invoke(Unknown Source)
    org.springframework.orm.jpa.SharedEntityManagerCreator$SharedEntityManagerInvocationHandler.invoke(SharedEntityManagerCreator.java:298)
    com.sun.proxy.$Proxy125.persist(Unknown Source)
    br.com.casadocodigo.loja.dao.ProdutoDao.gravar(ProdutoDao.java:19)
    br.com.casadocodigo.loja.dao.ProdutoDao$$FastClassBySpringCGLIB$$297b3d16.invoke(<generated>)
    org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)
    org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:721)
    org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)
    org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:99)
    org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:282)
    org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96)
    org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
    org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:656)
    br.com.casadocodigo.loja.dao.ProdutoDao$$EnhancerBySpringCGLIB$$354ce910.gravar(<generated>)
    br.com.casadocodigo.loja.controller.ProdutoController.gravar(ProdutoController.java:23)
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    java.lang.reflect.Method.invoke(Unknown Source)
    org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:220)
    org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:134)
    org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:116)
    org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)
    org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)
    org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)
    org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:963)
    org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:897)
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)
    org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:648)
    org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
note The full stack trace of the root cause is available in the Apache Tomcat/8.5.8 logs.

Apache Tomcat/8.5.8

Alguma ideia, do que possa estar acontecendo Alex ?

Opa Ewerton, blz? Adicione a seguinte property da JPA:

properties.setProperty("hibernate.hbm2ddl.auto", "create");

Além disso, eu percebi que o seu model está com id do tipo String e isso vai dar ruim na hora de gerar o id por meio do gerador que está sendo configurado, portanto, modifique de String para Long. Teste e veja se agora a tabela é criada.

Abraços.

Alterei, mas continuou dando o msm erro...

Lembrando que você precisa criar o database antes que no caso é o casadocodigo. Bom, eu vou mandar o código da forma que deixei a classe de configuração da JPA:

@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("root");
        dataSource.setPassword("");
        dataSource.setUrl("jdbc:mysql://localhost:3306/casadocodigo");
        dataSource.setDriverClassName("com.mysql.jdbc.Driver");

        factoryBean.setDataSource(dataSource);

        Properties properties = new Properties();
        properties.setProperty("hibernate.dialect", "org.hibernate.dialect.MySQL5Dialect");
        properties.setProperty("hibernate.show_sql", "true");
        properties.setProperty("hibernate.hbm2dll.auto", "update");
        properties.setProperty("hibernate.hbm2ddl.auto", "create");

        factoryBean.setJpaProperties(properties);

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

        return factoryBean;
    }

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

Agora a classe Produto:

@Entity
public class Produto {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    // atributos e métodos

        public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

}

Eu estava testando pra vê o motivo e foi dessa forma que deu certo pra mim. Pare e execute novamente o servidor, caso der certo ele vai mostrar a mensagem de criação, vou mostrar como vai ser a mensagem:

Hibernate: drop table if exists Produto
Hibernate: create table Produto (id bigint not null auto_increment, descricao varchar(255), paginas integer not null, titulo varchar(255), primary key (id))

Veja se da certo agora.

Abraços.

Bom dia Alex!

Deixei da mesma forma que vc, startei o TomCat e no log não mostrou a msg... Acessei o sistema e tentei cadastrar um livro e deu o msm erro:

HTTP Status 500 - Request processing failed; nested exception is javax.persistence.PersistenceException: org.hibernate.exception.SQLGrammarException: could not execute statement

Meu projeto => https://drive.google.com/drive/folders/0B1n2t9Tjxu9GckdsZEowUGRxT2s?usp=sharing

Abraço!

solução!

Ewerton, vi que você deixou assim:

properties.setProperty("hibernate.hbm2dll.auto", "update");
properties.setProperty("hibernate.hbm2dll.auto", "create");

Veja que está com o valor hbm2dll ao invés de hbm2ddl, modifique e deixe conforme o exemplo abaixo:

properties.setProperty("hibernate.hbm2dll.auto", "update");
properties.setProperty("hibernate.hbm2ddl.auto", "create");

Aí tenta rodar novamente e verifica se ele consegue criar as tabelas no banco casadocodigo.

Abraços.

Putz cara era isso msm... Valeu Alex!!! Um abraço e boa semana !!!