GUJ Discussões   :   últimos tópicos   |   categorias   |   GUJ Respostas

ERRO com Hibernate + TomCat 9 + Eclipse

tomcat
hibernate
mysql
Tags: #<Tag:0x00007f6102f725a0> #<Tag:0x00007f6102f72460> #<Tag:0x00007f6102f72320>
#1

Prezados, comecei meus estudos com Hibernate e resolvi fazer uma aplicação para testar o que estava aprendendo.

Eu fiz um cadastro de usuário e queria persistir ele em um banco de dados.

Estou utilizando o Eclipse, os passos são o seguinte.

1- Na minha classe de teste está funcionando normalmente, dou Run as Java Application funciona normalmente.

2- Quando eu inicio o Tomcat pelo próprio eclipse ele funciona numa boa, consigo acessar o formulário de cadastro, mas quando eu dou o submit acontece o seguinte erro.
image

3- erro ao dar o submit

GRAVE: Servlet.service() for servlet [default] in context with path [/biblioteca] threw exception
javax.persistence.PersistenceException: No Persistence provider for EntityManager named biblioteca
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:84)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:54)
at br.com.biblioteca.util.UsuarioController.(UsuarioController.java:17)
at br.com.biblioteca.acao.AdicionarPessoa.executa(AdicionarPessoa.java:36)
at br.com.biblioteca.filtros.controladorFilter.doFilter(controladorFilter.java:44)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at br.com.biblioteca.filtros.AutorizacaoFilter.doFilter(AutorizacaoFilter.java:31)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:200)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:490)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:678)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:408)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:836)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1839)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Unknown Source)

Eu tentei resolver de várias formas e não consegui, talvez seja algum problema no meu EntityManager.

segue persistence.xml

<!-- unidade de persistencia com o nome financas -->
<persistence-unit name="biblioteca" transaction-type="RESOURCE_LOCAL">

	<!-- Implementação do JPA, no nosso caso Hibernate -->
	<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
	

	<!-- Aqui são listadas todas as entidades -->
	<class>br.com.biblioteca.modelo.Usuario</class>
	
	<properties>

		<!-- Propriedades JDBC -->
		<property name="javax.persistence.jdbc.driver"
			value="com.mysql.jdbc.Driver" />
		<property name="javax.persistence.jdbc.url"
			value="jdbc:mysql://localhost/biblioteca" />
		<property name="javax.persistence.jdbc.user" value="root" />
		<property name="javax.persistence.jdbc.password" value="123456" />

		<!-- Configurações específicas do Hibernate -->
		<property name="hibernate.dialect"
			value="org.hibernate.dialect.MySQL5InnoDBDialect" />
		<property name="hibernate.hbm2ddl.auto" value="update" />
		<property name="hibernate.show_sql" value="true" />
		<property name="hibernate.format_sql" value="true" />
	</properties>
</persistence-unit>

Minha classe que instancia o EntityManager

package br.com.biblioteca.util;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;

import br.com.biblioteca.modelo.Usuario;

public class UsuarioController {

EntityManagerFactory emf; 
EntityManager em;


public UsuarioController() {
	
	emf = Persistence.createEntityManagerFactory("biblioteca");
	em = emf.createEntityManager();
	
}


public void cadastraUsuario(Usuario _usuario) {
	
	em.getTransaction().begin();
	em.persist(_usuario);
	em.getTransaction().commit();
	em.close();
}

}

Minha classe Usuario

package br.com.biblioteca.modelo;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

@Entity
public class Usuario {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
private String nome; 
private Integer idade; 
private String cpf; 
private String senha;
private String email;



public Integer getId() {
	return id;
}
public void setId(Integer id) {
	this.id = id;
}
public String getEmail() {
	return email;
}
public void setEmail(String email) {
	this.email = email;
}
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;
}
public String getCpf() {
	return cpf;
}
public void setCpf(String cpf) {
	this.cpf = cpf;
}
public String getSenha() {
	return senha;
}
public void setSenha(String senha) {
	this.senha = senha;
} 

}

E a minha classe que recebe os parametros

import java.io.IOException;

import javax.persistence.EntityManager;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import br.com.biblioteca.modelo.Usuario;
import br.com.biblioteca.util.UsuarioController;

public class AdicionarPessoa implements Acao {

@Override
public String executa(HttpServletRequest request, HttpServletResponse response)
		throws IOException, ServletException {

	String nomeUsuario = request.getParameter("nomeUsuario");
	Integer idadeUsuario = Integer.parseInt(request.getParameter("idadeUsuario"));
	String cpfUsuario = request.getParameter("cpfUsuario");
	String senhaUsuario = request.getParameter("senhaUsuario");
	String emailUsuario = request.getParameter("emailUsuario");
	
	Usuario usuario = new Usuario();	
	
	usuario.setNome(nomeUsuario);
	usuario.setIdade(idadeUsuario);
	usuario.setCpf(cpfUsuario);
	usuario.setSenha(senhaUsuario);
	usuario.setEmail(emailUsuario);
	
	
	
	UsuarioController UC = new UsuarioController();
	
	UC.cadastraUsuario(usuario);
	
	
	return null;
}

}

Esta como return null pois ainda estava testando.

0 Likes

#2

Fala ai @Kalillisboa, acho que esse post antigo pode te ajudar a solucionar seu problema
https://www.guj.com.br/t/resolvido-no-persistence-provider-for-entitymanager-named-sample/295071
Abraços
Max

0 Likes