Boa tarde galera,
Estou tentando desenvolver uma aplicação utilizando JPA, porem tem sido exibido um erro me parece ser refere a EntityManager, o qual não estou conseguindo descobrir o motivo, visto que pra mim a aplicação está com a estrutura montada toda corretamente, se possivel, gostaria que alguem pudesse me dar um auxilio ou sugestão, segue o código abaixo.
PERSISTENCE.XML
<?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="ControleFinanceiro" transaction-type="JTA">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<class>bd.systems.controlefinanceiro.model.Categoria</class>
<class>bd.systems.controlefinanceiro.model.Subcategoria</class>
<class>bd.systems.controlefinanceiro.model.Pessoa</class>
<class>bd.systems.controlefinanceiro.model.Conta</class>
<class>bd.systems.controlefinanceiro.model.ContasLancadas</class>
<properties>
<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3310/controlefinanceiro"/>
<property name="javax.persistence.jdbc.user" value="root"/>
<property name="javax.persistence.jdbc.password" value="vivi2012"/>
<!-- DIALETO SERIA A LINGUAGEM DO BANCO DE DADOS, CADA BANCO TEM A SUA -->
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect"/>
<!-- CREATE | UPDATE (se tiver alguma diferença entre o bd oo e o relacional, ele atualizará )| VALIDATE | CREATE-DROP -->
<property name="hibernate.hbm2ddl.auto" value="update"/>
<property name="hibernate.show_sql" value="true"/>
<property name="hibernate.format_sql" value="true"/>
<property name="hibernate.hbm2ddl.auto" value="update" />
</properties>
</persistence-unit>
</persistence>
CLASSE MODEL CHAMADA CATEGORIA
package bd.systems.controlefinanceiro.model;
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Embeddable;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Embeddable
@Table
public class Categoria implements Serializable {
/**
* variaveis
*/
@Id
@GeneratedValue
private int id;
//@Column(name="descricao", length=100, nullable=false)
private String descricao;
/**
* getters and setters
*/
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
@Column
public String getDescricao() {
return descricao;
}
public void setDescricao(String descricao) {
this.descricao = descricao;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((descricao == null) ? 0 : descricao.hashCode());
result = prime * result + id;
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Categoria other = (Categoria) obj;
if (descricao == null) {
if (other.descricao != null)
return false;
} else if (!descricao.equals(other.descricao))
return false;
if (id != other.id)
return false;
return true;
}
}
PÁGINA XHTML
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1- transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:p="http://primefaces.org/ui">
<h:head>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<link rel="stylesheet" href="CSS/CadastrarUsuario.css" type="text/css" />
<title>Cadastro de Categorias</title>
</h:head>
<h:body>
<h:form id="formCategoria">
<fieldset id="dados">
<legend>Dados da Categoria</legend>
<h:panelGrid columns="2">
<h:outputLabel value="Descrição:" for="descricao" styleClass="campo" />
<h:panelGroup>
<h:inputText id="descricao" value="#{categoriaBean.categoria.descricao}" size="30" maxlenght="25" required="true" />
<h:message for="descricao" showSummary="true" showDetail="false" />
</h:panelGroup>
</h:panelGrid>
<h:panelGrid columns="3">
<h:commandButton value="Salvar" action="#{categoriaBean.Salvar(categoriaBean.categoria)}" />
<p:button value="Limpar" type="reset"/>
</h:panelGrid>
</fieldset>
</h:form>
</h:body>
</html>
MANAGED BEAN CATEGORIA
package bd.systems.controlefinanceiro.bean;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ApplicationScoped;
import javax.faces.bean.ManagedBean;
import javax.faces.context.FacesContext;
import javax.persistence.EntityManager;
import javax.persistence.Query;
import bd.systems.controlefinanceiro.dao.categoriaDAO;
import bd.systems.controlefinanceiro.model.Categoria;
import bd.systems.controlefinanceiro.util.JPAUtil;
@ManagedBean
@ApplicationScoped
public class CategoriaBean implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
List<Categoria> categorias = new ArrayList<Categoria>();
private Categoria categoria = new Categoria();
categoriaDAO dao = new categoriaDAO();
/*
* SETTERS AND GETTERS
*/
public List<Categoria> getCategorias() {
// if(this.pessoas != null) {
EntityManager em = new JPAUtil().getEntityManager();
Query q = em.createQuery("select p from Categoria c", Categoria.class);
this.categorias = q.getResultList();
em.close();
// }
return categorias;
}
public Categoria getCategoria() {
return categoria;
}
/*
* CONSTRUTOR
*/
public CategoriaBean() {
this.categorias = new ArrayList<Categoria>();
this.categoria = new Categoria();
}
/*
* METODOS QUE VÃO EXISTIR NA MINHA REGRA DE NEGOCIOS
*/
public void Salvar(Categoria c) {
/*
this.pessoas.add(this.pessoa);
System.out.println("Nome: " + p.getNome() + "\nNome do Banco: " + p.getNomeBanco() + "\nSaldo atual da conta: " + p.getSaldo());
this.pessoa = new Pessoa();
*/
c.getDescricao().trim();
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Salvando conta ", "Conta salva com sucesso!"));
dao.Salvar(c);
/*
EntityManager em = new JPAUtil().getEntityManager();
em.getTransaction().begin();
em.persist(p);
em.getTransaction().commit();
em.close();
*/
}
public void Excluir(Categoria c) {
System.out.println("Entrou aqui");
EntityManager em = new JPAUtil().getEntityManager();
em.getTransaction().begin();
c = em.merge(c); // o método merge é preciso para devolver o objeto ao estado gerenciado
em.remove(c);
em.getTransaction().commit();
em.close();
}
public void RetornarCategorias() {
}
/*
* METODOS QUE OCORREM NA HORA DA EXECUÇÃO E FINALIZAÇÃO DA MINHA BEAN
*/
@PostConstruct
public void iniciar() {
System.out.println("Iniciar o CategoriaBean");
}
@PreDestroy
public void finalizar() {
System.out.println("Finalizar o CategoriaBean");
}
MINHA DAO
package bd.systems.controlefinanceiro.dao;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.Query;
import bd.systems.controlefinanceiro.model.Categoria;
import bd.systems.controlefinanceiro.model.Pessoa;
import bd.systems.controlefinanceiro.util.JPAUtil;
public class categoriaDAO {
//EntityManagerFactory emf = Persistence.createEntityManagerFactory("ControleFinanceiro");
//EntityManager em = emf.createEntityManager();
EntityManager em = new JPAUtil().getEntityManager();
public void Salvar(Categoria c) {
// EntityManager em = new JPAUtil().getEntityManager();
em.getTransaction().begin();
em.persist(c);
em.getTransaction().commit();
em.close();
}
MINHA CLASSE JPAUTIL
package bd.systems.controlefinanceiro.util;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
public class JPAUtil {
private static EntityManagerFactory emf = Persistence.createEntityManagerFactory("ControleFinanceiro");
public EntityManager getEntityManager() {
return emf.createEntityManager();
}
public void close(EntityManager em) {
em.close();
}
}
O erro que tem sido exibido é esse abaixo:
java.lang.ExceptionInInitializerError
at bd.systems.controlefinanceiro.dao.categoriaDAO.<init>(categoriaDAO.java:16)
at bd.systems.controlefinanceiro.bean.CategoriaBean.<init>(CategoriaBean.java:31)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at java.lang.Class.newInstance(Unknown Source)
at com.sun.faces.mgbean.BeanBuilder.newBeanInstance(BeanBuilder.java:188)
at com.sun.faces.mgbean.BeanBuilder.build(BeanBuilder.java:102)
at com.sun.faces.mgbean.BeanManager.createAndPush(BeanManager.java:409)
at com.sun.faces.mgbean.BeanManager.create(BeanManager.java:269)
at com.sun.faces.el.ManagedBeanELResolver.resolveBean(ManagedBeanELResolver.java:244)
at com.sun.faces.el.ManagedBeanELResolver.getValue(ManagedBeanELResolver.java:116)
at com.sun.faces.el.DemuxCompositeELResolver._getValue(DemuxCompositeELResolver.java:176)
at com.sun.faces.el.DemuxCompositeELResolver.getValue(DemuxCompositeELResolver.java:203)
at org.apache.el.parser.AstIdentifier.getValue(AstIdentifier.java:80)
at org.apache.el.parser.AstValue.getValue(AstValue.java:137)
at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:184)
at com.sun.faces.facelets.el.TagValueExpression.getValue(TagValueExpression.java:109)
at javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:194)
at javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:182)
at javax.faces.component.UIOutput.getValue(UIOutput.java:169)
at com.sun.faces.renderkit.html_basic.HtmlBasicInputRenderer.getValue(HtmlBasicInputRenderer.java:205)
at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.getCurrentValue(HtmlBasicRenderer.java:355)
at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeEnd(HtmlBasicRenderer.java:164)
at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:875)
at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeRecursive(HtmlBasicRenderer.java:312)
at com.sun.faces.renderkit.html_basic.GroupRenderer.encodeChildren(GroupRenderer.java:105)
at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:845)
at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeRecursive(HtmlBasicRenderer.java:304)
at com.sun.faces.renderkit.html_basic.GridRenderer.renderRow(GridRenderer.java:185)
at com.sun.faces.renderkit.html_basic.GridRenderer.encodeChildren(GridRenderer.java:129)
at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:845)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1779)
at javax.faces.render.Renderer.encodeChildren(Renderer.java:168)
at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:845)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1779)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1782)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1782)
at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:402)
at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:125)
at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:121)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:594)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:292)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:522)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1095)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:672)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1500)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1456)
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)
Caused by: javax.persistence.PersistenceException: Unable to build entity manager factory
at org.hibernate.jpa.HibernatePersistenceProvider.createEntityManagerFactory(HibernatePersistenceProvider.java:66)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:55)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:39)
at bd.systems.controlefinanceiro.util.JPAUtil.<clinit>(JPAUtil.java:9)
... 66 more
Caused by: org.hibernate.MappingException: component property not found: id
at org.hibernate.mapping.Component.getProperty(Component.java:274)
at org.hibernate.cfg.AnnotationBinder.fillComponent(AnnotationBinder.java:2653)
at org.hibernate.cfg.AnnotationBinder.fillComponent(AnnotationBinder.java:2511)
at org.hibernate.cfg.AnnotationBinder.bindComponent(AnnotationBinder.java:2459)
at org.hibernate.cfg.AnnotationBinder.processElementAnnotations(AnnotationBinder.java:2164)
at org.hibernate.cfg.AnnotationBinder.processIdPropertiesIfNotAlready(AnnotationBinder.java:906)
at org.hibernate.cfg.AnnotationBinder.bindClass(AnnotationBinder.java:733)
at org.hibernate.boot.model.source.internal.annotations.AnnotationMetadataSourceProcessorImpl.processEntityHierarchies(AnnotationMetadataSourceProcessorImpl.java:245)
at org.hibernate.boot.model.process.spi.MetadataBuildingProcess$1.processEntityHierarchies(MetadataBuildingProcess.java:222)
at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.complete(MetadataBuildingProcess.java:265)
at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.metadata(EntityManagerFactoryBuilderImpl.java:848)
at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:876)
at org.hibernate.jpa.HibernatePersistenceProvider.createEntityManagerFactory(HibernatePersistenceProvider.java:58)
... 69 more
Desde já agradeço por qualquer ajuda.