Bom dia, estou fazendo um cruso na alura o ‘Java e JSF: Sua aplicação web com JSF2’, entretanto estou enfrentando problemas com a aula 03. Nessa aula é disponibilizado um projeto pronto, com JSF e JPA Hibernate, sigo os passos exatamente como descritos no vídeo, mas estou com problemas ao executar a classe chamada PopulaBanco.java, ela cria alguns registros no MySQL, quando tento executa-la recebo várias exceptions, mas a primeira que ocorre é javax.persistence.PersistenceException. Vou postar abaixo a classe PopulaBanco.java e o persistence.xml, fiquei pesquisando aqui, mas não encontrei solução, o banco já está criado, o usuário root e senha estão corretos, a porta também está correta.
<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
version="2.0">
<persistence-unit name="livraria" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<class>br.com.caelum.livraria.modelo.Livro</class>
<class>br.com.caelum.livraria.modelo.Autor</class>
<properties>
<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver" />
<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/livrariadb" />
<property name="javax.persistence.jdbc.user" value="root" />
<property name="javax.persistence.jdbc.password" value="senha123" />
<property name="hibernate.hbm2ddl.auto" value="update" />
<property name="hibernate.show_sql" value="true" />
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect" />
</properties>
</persistence-unit>
package br.com.caelum.livraria.dao;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import javax.persistence.EntityManager;
import br.com.caelum.livraria.modelo.Autor;
import br.com.caelum.livraria.modelo.Livro;
public class PopulaBanco {
public static void main(String[] args) {
EntityManager em = new JPAUtil().getEntityManager();
em.getTransaction().begin();
Autor assis = geraAutor("Machado de Assis");
em.persist(assis);
Autor amado = geraAutor("Jorge Amado");
em.persist(amado);
Autor coelho = geraAutor("Paulo Coelho");
em.persist(coelho);
Livro casmurro = geraLivro("978-8-52-504464-8", "Dom Casmurro",
"10/01/1899", 24.90, assis);
Livro memorias = geraLivro("978-8-50-815415-9",
"Memorias Postumas de Bras Cubas", "01/01/1881", 19.90, assis);
Livro quincas = geraLivro("978-8-50-804084-1", "Quincas Borba",
"01/01/1891", 16.90, assis);
em.persist(casmurro);
em.persist(memorias);
em.persist(quincas);
Livro alquemista = geraLivro("978-8-57-542758-3", "O Alquimista",
"01/01/1988", 19.90, coelho);
Livro brida = geraLivro("978-8-50-567258-7", "Brida", "01/01/1990",
12.90, coelho);
Livro valkirias = geraLivro("978-8-52-812458-8", "As Valkirias",
"01/01/1992", 29.90, coelho);
Livro maao = geraLivro("978-8-51-892238-9", "O Diario de um Mago",
"01/01/1987", 9.90, coelho);
em.persist(alquemista);
em.persist(brida);
em.persist(valkirias);
em.persist(maao);
Livro capitaes = geraLivro("978-8-50-831169-1", "Capitaes da Areia",
"01/01/1937", 6.90, amado);
Livro flor = geraLivro("978-8-53-592569-9",
"Dona Flor e Seus Dois Maridos", "01/01/1966", 18.90, amado);
em.persist(capitaes);
em.persist(flor);
em.getTransaction().commit();
em.close();
}
private static Autor geraAutor(String nome) {
Autor autor = new Autor();
autor.setNome(nome);
return autor;
}
private static Livro geraLivro(String isbn, String titulo, String data,
double preco, Autor autor) {
Livro livro = new Livro();
livro.setIsbn(isbn);
livro.setTitulo(titulo);
livro.setDataLancamento(data);
livro.setPreco(preco);
livro.adicionaAutor(autor);
return livro;
}
@SuppressWarnings("unused")
private static Calendar parseData(String data) {
try {
Date date = new SimpleDateFormat("dd/MM/yyyy").parse(data);
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
return calendar;
} catch (ParseException e) {
throw new IllegalArgumentException(e);
}
}
}
package br.com.caelum.livraria.dao;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
public class JPAUtil {
private static EntityManagerFactory emf = Persistence
.createEntityManagerFactory("livraria");
public EntityManager getEntityManager() {
return emf.createEntityManager();
}
public void close(EntityManager em) {
em.close();
}
}