Dúvidas sobre erro referente a JPA

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.

Como você deve ter visto, tem algo errado com a id. Remova a anotação @GeneratedValue ou adicione uma estratégia para ela com
strategy = GenerationType... e veja se acontece algo diferente.

Creio que a anotação @Embeddable não seja necessária.

Ola @bruno.daniel,

O tipo de transação deve ser RESOURCE_LOCAL.

<persistence-unit name="ControleFinanceiro" transaction-type="RESOURCE_LOCAL">