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

PRECISO DE AJUDA COM ESSE ERRO (O QUE PODE SER?) : javax.persistence.PersistenceException: No Persistence provider for EntityManager named bancogestao


#1

Essa é a entidade projeto :

@Entity
public class Projeto {

@Id
@GeneratedValue
private int id;
private String nome;
private String desc;
private String prevFinal;

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 String getDesc() {
    return desc;
}

public void setDesc(String desc) {
    this.desc = desc;
}

public String getPrevFinal() {
    return prevFinal;
}

public void setPrevFinal(String prevFinal) {
    this.prevFinal = prevFinal;
}

}

Assim está o persistence.xml :

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.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_2_0.xsd">
<persistence-unit name="bancogestao" transaction-type="JTA">
<!-- provedor/implementacao do JPA -->
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<!-- entidade mapeada -->
<jta-data-source>java:app/bancogestao</jta-data-source>
<class>Entidades.Projeto</class>
<class>Entidades.Tarefa</class>
<class>Entidades.Equipe</class>
<class>Entidades.Pessoa</class>
<class>Entidades.Recurso</class>
<properties>
  <!-- dados da conexao -->
  <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
  <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/bancogestao"/>
  <property name="javax.persistence.jdbc.user" value="root"/>
  <property name="javax.persistence.jdbc.password" value="root"/>
  <!--  propriedades do hibernate -->
  <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect"/>
  <property name="hibernate.show_sql" value="true"/>
  <property name="hibernate.format_sql" value="true"/>
  <!--  atualiza o banco, gera as tabelas se for preciso -->
  <property name="hibernate.hbm2ddl.auto" value="update"/>
</properties>

Assim está a página web :

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>
<center>
<h1>Cadastro Projeto</h1>
<form action="mvc" method="POST">
Nome do Projeto : <input type="text" name="nome" /><br/><br/><br/>
Descrição do Projeto : <input type="text" name="desc" /><br/><br/><br/>
Previsão de Finalização : <input type="text" name="prev" /><br/><br/><br/>
<input type="hidden" name="logica" value="CadastraProjeto"/>  
<input type="submit" value="Enviar"/>
</form>
</center>
</body>
</html>

Assim está o ControllerServlet :

@WebServlet("/mvc")
public class ControllerServlet extends HttpServlet {


protected void processRequest(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException, SQLException {
    
    String logica = request.getParameter("logica");
    
    
    String paginaErroServlet = "erroServlet.jsp";
    
try {
if(logica.equals("CadastraProjeto"))
{
ProjetoController projeto = new ProjetoController();
projeto.salvar(request.getParameter("nome"), 
request.getParameter("desc"), request.getParameter("prevFinal"));
            
}
        
} catch (ClassNotFoundException ex) {
request.getRequestDispatcher(paginaErroServlet).forward(request, 
response);
} 
    
}
}

Assim está o Logica.java :

public interface Logica {

/**
 * Executa uma ação
 * @param request  requisição do usuário
 * @param response resposta à requisição
 * @return String contendo o nome da página para a qual o site deverá ser direcionado
 */
String execute(HttpServletRequest request, HttpServletResponse response);
}

Esse é o ProjetoController :

public class ProjetoController {
private ProjetoDAO daoProjeto;

public ProjetoController() throws ClassNotFoundException, SQLException
{
   daoProjeto = new ProjetoDAO();
}

public void salvar(String nome, String desc, String prevFinal) throws SQLException
{
    Projeto projeto = new Projeto();
    
    projeto.setNome(nome);
    projeto.setDesc(desc);
    projeto.setPrevFinal(prevFinal);
   
    daoProjeto.salvar(projeto);
        
}
}

Esse é o ProjetoDAO :

public class ProjetoDAO {

   private Session sessao;
   private Transaction transaction;
public void salvar(Projeto projeto)
{
     EntityManagerFactory factory = Persistence.createEntityManagerFactory("bancogestao");
     
    try{
     EntityManager manager = factory.createEntityManager();   
     manager.getTransaction().begin();
     manager.persist(projeto);
     manager.getTransaction().commit();
    }
    catch(Exception e){
        System.out.println("Erro ao salvar.");
    }
    finally{
        factory.close();
    }

}

}

ESTOU TENTANDO INSERIR O PROJETO NESSE BANCO (mysql):

create database bancogestao;
use bancogestao;
show tables;

#2

Boa tarde,

Se vc está chamando a persistence-unit sem criar o datasource no appserver, coloca em seu persistence-unit: transaction-type=RESOURCE_LOCAL

Veja se funciona.


#4

Fica assim : persistence-unit name=“gestao” transaction-type=“RESOURCE_LOCAL”?


#5

Se for, deu o mesmo erro


#6

Vamos por partes:

Troque a linha:
<provider>org.hibernate.ejb.HibernatePersistence</provider>
por
<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>

Remova a linha:<jta-data-source>java:app/bancogestao</jta-data-source>

Na linha de configuração do persistense-unit, coloque: <persistence-unit name="bancogestao" transaction-type="RESOURCE_LOCAL">


#7


Alguém pode me ajudar aqui, pless


#8

Quando eu removo essa linha que vc solicitou, some outra parte do código