Hibernate -Table 'lojaHiber.cliente' doesn't exist

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:

Geralmente no hibernate o arquivo de persistencia termina com PU

você verifica conforme exemplo da linha abaixo no xml:

persistence-unit name=“LojaPU” transaction-type=“RESOURCE_LOCAL”>

Olá, fiz a alteração mas o erro se mantém.

Ele não cria a tabela cliente.

Só funciona quando crio no DBeaver, ai ele preenche:

CREATE TABLE cliente(
id INT( 20 ) AUTO_INCREMENT ,
nome VARCHAR(255),
idade int(20),
PRIMARY KEY ( id )
);

No hibernate é demorado a conexão da primeira linha, por isso ela sempre fica aberta, você pode colocar a primeira linha no main e quando instanciar o objeto RepositorioCliente você passaria a persistencia por parâmetro. Mas creio que isso não faria dar erro. Pode ser bastante coisa e sem ter acesso ao código fica complicado, acho importante você colocar a classe Cliente, que é onde é feito o relacionamento e também vale ressaltar que tem que colocar a classe Cliente no persistence.xml.
O erro que está dando ali fala que não existe o relacionamento da tabela cliente. Você deveria para fazer funcionar o teste ir no seu arquivo presistence.xml e colocar em estratégia de geração de tabela a opção Eliminar e Criar. Pode ser até erro no drive. Quando você adiciona a classe do banco no persistence.xml fica assim: <class>ItensHibernate.CadastroCliente</class>

<persistence-unit name="mottaPU" transaction-type="RESOURCE_LOCAL"> 
        <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
        <class>com.exemplo.entidade.Cliente</class>
    <properties>

fiz a modificação, mas continua:

Aqui vai o link do arquivo completo:
https://drive.google.com/file/d/1nkKteyVTyUijuRukGXFk-5pywsdMHM9m/view?usp=sharing

Eu peguei seu código e abri no meu netbeans e fui testar. Primeira coisas que eu fiz foi colocar 3 drivers na pasta biblioteca: 1º Coloquei da Hibernate4.3x(JPA2.1), depois uma que tive que achar na internet chamada jandex2.0.4 e a última foi o driver JDBC do MySQL. Então me veio o erro de conexão fechada, pois você só instancia a classe uma vez e fecha a conexão, mas não abre novamente, naquilo que já havia te chamado a atenção anteiormente.

Vou dar uma arrumada e te falo.

vou passar as alterações, funcionou aqui, até verifiquei se inseriu. Depois muda de Eliminar e criar e coloca igual estava no seu o atributo update no persistence.xml

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
  <persistence-unit name="mottaPU" transaction-type="RESOURCE_LOCAL">
    <provider>org.hibernate.ejb.HibernatePersistence</provider>
    <class>com.exemplo.entidade.Cliente</class>
    <properties>
      <property name="hibernate.cache.provider_class" value="org.hibernate.cache.NoCacheProvider"/>
      <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/lojaHiber"/>
      <property name="javax.persistence.jdbc.password" value="123"/>
      <property name="javax.persistence.jdbc.user" value="root"/>
      <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
      <property name="hibernate.show_sql" value="true"/>
      <property name="hibernate.format_sql" value="true"/>
      <property name="javax.persistence.schema-generation.database.action" value="drop-and-create"/>
    </properties>
  </persistence-unit>
</persistence>

package com.exemplo.testes;

import com.exemplo.entidade.Cliente;
import com.exemplo.repositorio.RepositorioCliente;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;

public class Testes {

public static void main(String[] args){

	 
            EntityManagerFactory emf = Persistence.createEntityManagerFactory("mottaPU"); // Aqui diz a unidade de persist�ncia especificada no arquivo persistance.xml
	EntityManager em = emf.createEntityManager();
	RepositorioCliente repositorioCliente = new RepositorioCliente(emf,em);
	
	Cliente cliente = new Cliente();
	
	cliente.setNome("Marcel Motta");
	cliente.setIdade(43);
	
	repositorioCliente.salvar(cliente);
}

}

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(EntityManagerFactory emf,EntityManager em) {
	this.emf = emf;
	this.em = em;
	
}

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.merge(cliente);  // poderia ser em.persiste(cliente);
	   // abaixo executa no BD
		em.getTransaction().commit();
	   // fechando conexao
		
		
	} 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();
	  
		
	} catch (Exception e) {
		em.getTransaction().rollback();
		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();
		return listaClientes;
	} catch (Exception e) {
		System.out.println(" erro ao Listar :" +e.getMessage());
	}

			
	return null;
}

}// end class

1 curtida

valeu!