Estou quebrando a cabeça e não descubro o erro:
persistence.xml
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.0"
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_1_0.xsd">
<persistence-unit name="mottaPU" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
<properties>
<property name="hibernate.archive.autodetection" value="class" />
<!-- Conexão com o banco de dados -->
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" />
<property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver" />
<property name="hibernate.connection.url" value="jdbc:mysql://localhost/lojaHiber" />
<property name="hibernate.connection.user" value="root" />
<property name="hibernate.connection.password" value="123" />
<!--<property name="hibernate.hbm2ddl.auto" value="create" /> create cria nova tab/ update atualiza a que já existe-->
<property name="hibernate.hbm2ddl.auto" value="update"/>
<!--Configuracoes de Debug-->
<property name="hibernate.show_sql" value="true" />
<property name="hibernate.format_sql" value="true" />
<property name="use_sql_comments" value="true" />
</properties>
</persistence-unit>
</persistence>
Cliente.java
package com.exemplo.entidade;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity // procura a classe marcada // importar com javax.persistence.Entity;
@Table(name="cliente") // Se não especificar copia o nome da classe na tabela
public class Cliente {
// @Id marcando o campo que será a primary key, marcador único
// @GeneratedValue valor que será incrementado no Mysql
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private int id;
@Column // necessário para dizer a coluna da tabela gerada
private String nome;
@Column
private int idade;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public int getIdade() {
return idade;
}
public void setIdade(int idade) {
this.idade = idade;
}
}// end class
RepositorioCliente.java
package com.exemplo.repositorio;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.persistence.Query;
import com.exemplo.entidade.Cliente;
public class RepositorioCliente {
// Seria uma classe DAO, reponsável por persistir objeto no Baco de Dados
// CRUD Criar Listar Atualizar Deletar
// EntityManagerFactory Gerencia comunicação com BD
EntityManagerFactory emf;
// EntityManager faz as transações
EntityManager em;
public RepositorioCliente() {
emf = Persistence.createEntityManagerFactory("mottaPU"); // Aqui diz a unidade de persistência especificada no arquivo persistance.xml
em = emf.createEntityManager();
}
public void salvar(Cliente cliente) {
try {
// Abrindo conexao com o BD
em.getTransaction().begin();
// merge de já existir cliente ele tenta atualizar, merge pod serusado para atualizar ou criar objeto novo
em.persist(cliente); // poderia ser em.persiste(cliente);
// abaixo executa no BD
em.getTransaction().commit();
// fechando conexao
emf.close();
} catch (Exception e) {
System.out.println(" erro ao Salvar:" +e.getMessage());
}
}
public void remover(Cliente cliente) {
try {
em.getTransaction().begin();
//
em.remove(cliente);;
//
em.getTransaction().commit();
emf.close();
} catch (Exception e) {
System.out.println(" erro ao Salvar :" +e.getMessage());
}
}
public List<Cliente> listarTodos(){
try {
em.getTransaction().begin();
// Abaixo importado do jaxa.persistance
Query consulta = em.createQuery("select cliente from Cliente cliente"); // Não é um SQL puro, é SQL do JPA // consulta JPA
// abaixo cria uma lista temporaria de clientes
List<Cliente> listaClientes = consulta.getResultList();
em.getTransaction().commit();
emf.close();
return listaClientes;
} catch (Exception e) {
System.out.println(" erro ao Listar :" +e.getMessage());
}
return null;
}
}// end class
Testes.java
package com.exemplo.testes;
import com.exemplo.entidade.Cliente;
import com.exemplo.repositorio.RepositorioCliente;
public class Testes {
public static void main(String[] args){
RepositorioCliente repositorioCliente = new RepositorioCliente();
Cliente cliente = new Cliente();
cliente.setNome("Marcel Motta");
cliente.setIdade(43);
repositorioCliente.salvar(cliente);
}
}
Erro:
at com.mysql.jdbc.StatementImpl.execute(StatementImpl.java:745)
at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept(GenerationTargetToDatabase.java:54)
… 16 more
Hibernate:
insert
into
cliente
(idade, nome)
values
(?, ?)
abr 07, 2018 8:54:29 PM org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions
WARN: SQL Error: 1146, SQLState: 42S02
abr 07, 2018 8:54:29 PM org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions
ERROR: Table 'lojaHiber.cliente' doesn't exist
erro ao Salvar:org.hibernate.exception.SQLGrammarException: could not execute statement
Base de Dados criada no DBeaver:
############## HIBERNATE EXEMPLO: HibernateLojaJavaSE ####
CREATE DATABASE lojaHiber;
USE lojaHiber;
Imagem do projeto:
Bibliotecas:

