Pessoal, estou acompanhando o livro de springMVC da  casa do código e estou tendo problemas ao tentar cadastrar produtos. Ao clicar em enviar é gerado um erro: HTTP Status 500 - Request processing failed; nested exception is org.springframework.transaction.CannotCreateTransactionException: Could not open JPA EntityManager for transaction; nested exception is javax.persistence.PersistenceException: org.hibernate.exception.SQLGrammarException: Could not open connection
Já pesquisei e não estou conseguindo corrigir este erro.
Percebi que o BD não está sendo criado.
Será que vocês poderiam me ajudar?
JPAConfiguration.java
    package br.com.casadocodigo.loja.conf;
    
   import java.util.Properties;
  import javax.persistence.EntityManagerFactory;
  import javax.sql.DataSource;
 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.PlatformTransactionManager;
 import org.springframework.transaction.annotation.EnableTransactionManagement;
@EnableTransactionManagement
public class JPAConfiguration {
@Bean
public LocalContainerEntityManagerFactoryBean entityManagerFactory() {
	LocalContainerEntityManagerFactoryBean em = new LocalContainerEntityManagerFactoryBean();
	em.setDataSource(dataSource());
	em.setPackagesToScan(new String[] { "br.com.casadocodigo.loja.models" });
	JpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
	em.setJpaVendorAdapter(vendorAdapter);
	em.setJpaProperties(additionalProperties());
	return em;
}
@Bean
public DataSource dataSource() {
	DriverManagerDataSource dataSource = new DriverManagerDataSource();
	dataSource.setDriverClassName("com.mysql.jdbc.Driver");
	dataSource.setUrl("jdbc:mysql://localhost:3306/casadocodigo");
	dataSource.setUsername("root");
	dataSource.setPassword("Master1");
	return dataSource;
}
private Properties additionalProperties() {
	Properties properties = new Properties();
	properties.setProperty("hibernate.hbm2ddl.auto", "update");
	properties.setProperty("hibernate.dialect", "org.hibernate.dialect.MySQL5Dialect");
	properties.setProperty("hibernate.show_sql", "true");
	return properties;
}
@Bean
public PlatformTransactionManager transactionManager(EntityManagerFactory emf) {
	JpaTransactionManager transactionManager = new JpaTransactionManager();
	transactionManager.setEntityManagerFactory(emf);
	return transactionManager;
}
}
ProductsController.java
 package br.com.casadocodigo.loja.controllers;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import br.com.casadocodigo.loja.daos.ProductDao;
import br.com.casadocodigo.loja.models.Product;
@Controller
public class ProductsController {
public ProductsController() {
	// TODO Auto-generated constructor stub
}
@Autowired
private ProductDao productDao;
@RequestMapping("/produtos")
public String save(Product product) {
	productDao.save(product);
	System.out.println("Cadastrando	o	produto	" + product);
	return "products/ok";
}
@RequestMapping("/produtos/form")
public String form() {
	return "products/form";
}
}
ProductsDao
package br.com.casadocodigo.loja.daos;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;
import br.com.casadocodigo.loja.models.Product;
@Repository
@Transactional
public class ProductDao {
@PersistenceContext
private EntityManager manager;
public void save(Product product) {
	manager.persist(product);
	
}
}
Products.java
package br.com.casadocodigo.loja.models;
 import javax.persistence.Entity;
 import javax.persistence.GeneratedValue;
 import javax.persistence.GenerationType;
 import javax.persistence.Id;
 import javax.persistence.Lob;
@Entity
public class Product {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
private String title;
@Lob
private String description;
private int pages;
public String getTitle() {
	return title;
}
public void setTitle(String title) {
	this.title = title;
}
public String getDescription() {
	return description;
}
public void setDescription(String description) {
	this.description = description;
}
public int getPages() {
	return pages;
}
public void setPages(int pages) {
	this.pages = pages;
}
public Product() {
	// TODO Auto-generated constructor stub
}
}
