[RESOLVIDO] SpringMVC erro na criação do BD

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
}

}

  • Você tem o MySQL instalado?
  • Existe um banco/schema com o nome casadocodigo?

Oi Darlan, tenho o mysql instalado sim.

Ok, tem MySQL.
Agora, tem um banco chamado “casadocodigo”?
Se não tem, esta é a razão pela qual o erro está ocorrendo e você precisa criar este banco

Muito obrigado pela sua ajuda. Agora está funcionando!