EJB 3(JPA erro)

Pessoal estou utilizando JPA e EJB3.0 e estou tendo o seguindo erro…

Caused by: java.lang.ClassNotFoundException: org.hibernate.collection.PersistentBag

Segue as class.


package com.analisecredito.bean;

import javax.ejb.Stateful;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;

import com.analisecredito.entity.Conta;
import com.analisecredito.interfaces.ContaManager;

@Stateful
public class ContaManagerBean implements ContaManager {	
	
	
	@PersistenceContext(unitName = "analise-credito")
	private EntityManager entityManager;

	@Override
	public void delete(Object t) {
		entityManager.remove(entityManager.merge(t));		
	}

	@Override
	public Object load(Long key) {	
		return entityManager.find(Conta.class, key);
	}

	@Override
	public Object aberturaConta(Object t) {			
		return entityManager.merge(t);
	}
}

package com.analisecredito.bean;

import java.math.BigDecimal;
import java.util.Date;

import javax.ejb.EJB;

import com.analisecredito.entity.Cliente;
import com.analisecredito.entity.Conta;
import com.analisecredito.entity.Pedido;
import com.analisecredito.factory.EntityBeanFactory;
import com.analisecredito.factory.LookupNameClass;
import com.analisecredito.interfaces.ClienteManager;
import com.analisecredito.interfaces.ContaManager;
import com.analisecredito.interfaces.PedidoManager;

@SuppressWarnings("unchecked")
public class Test {
	
	@EJB
	private ContaManager contaManager;
	
	@EJB
	private PedidoManager pedidoManager;
	
	@EJB
	private ClienteManager clienteManager;
	
	/**
	 * 
	 */
	private void lookupSession() {
		
		try {
			
			Cliente cliente = new Cliente();
			cliente.setNome("Vinicius");
			cliente.setEndereco("Rua jose maria");
			cliente.setRg(Integer.parseInt("456231225"));
			cliente.setCpf(Long.parseLong("33887218825"));
			cliente.setTelefone("58410202");
			
			clienteManager = EntityBeanFactory.createEntityBean(LookupNameClass.CLIENE_MANAGER);
			cliente = (Cliente) clienteManager.cadastra(cliente);
			
			Conta conta = new Conta();
			conta.setDataCriacao(new Date());
			conta.setAgencia(new Short("1205"));
			conta.setRendaMensal(new BigDecimal("1900.00"));
			conta.setPatrimonio(new BigDecimal("0"));
			conta.setGastoMensal(new BigDecimal("1000.00"));
			conta.setValor(new BigDecimal("0"));
			
			/* Add cliente */
			conta.setCliente(cliente);
			
			contaManager = EntityBeanFactory.createEntityBean(LookupNameClass.CONTA_MANAGER);			
			conta = (Conta) contaManager.aberturaConta(conta);
			
			Pedido pedido = new Pedido();
			pedido.setGastoMensal(conta.getGastoMensal());
			pedido.setPatrimonio(conta.getPatrimonio());
			pedido.setRendaMensal(conta.getRendaMensal());
			
			pedido.setQtdeMesesPagamento(6);
			pedido.setValorCredito(new BigDecimal("2000.00"));			
			
			/* Add conta */ 
			pedido.setConta(conta);
			
			pedidoManager = EntityBeanFactory.createEntityBean(LookupNameClass.PEDIDO_MANAGER);			
			pedido = (Pedido) pedidoManager.aberturaPedido(pedido);
		
						
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	public static void main(String[] args) {
		new Test().lookupSession();
	}
}


package com.analisecredito.entity;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;

@Entity
public class Conta implements Serializable {
	
	private static final long serialVersionUID = 6861667074425177311L;
	
	private Long numero;
	private Short agencia;
	private BigDecimal valor;
	private BigDecimal rendaMensal;
	private BigDecimal patrimonio;
	private BigDecimal gastoMensal;
	private Date dataCriacao;
	private Cliente cliente;
	private Collection<Pedido> pedidos = new ArrayList<Pedido>();
	
	@Id
	@GeneratedValue(strategy=GenerationType.IDENTITY)
	@Column(name="numero")
	public Long getNumero() {
		return numero;
	}
	public void setNumero(Long numero) {
		this.numero = numero;
	}
	public Short getAgencia() {
		return agencia;
	}
	public void setAgencia(Short agencia) {
		this.agencia = agencia;
	}
	public BigDecimal getValor() {
		return valor;
	}
	public void setValor(BigDecimal valor) {
		this.valor = valor;
	}
	public Date getDataCriacao() {
		return dataCriacao;
	}
	public void setDataCriacao(Date dataCriacao) {
		this.dataCriacao = dataCriacao;
	}
	
	public BigDecimal getRendaMensal() {
		return rendaMensal;
	}
	public void setRendaMensal(BigDecimal rendaMensal) {
		this.rendaMensal = rendaMensal;
	}
	public BigDecimal getPatrimonio() {
		return patrimonio;
	}
	public void setPatrimonio(BigDecimal patrimonio) {
		this.patrimonio = patrimonio;
	}
	public BigDecimal getGastoMensal() {
		return gastoMensal;
	}
	public void setGastoMensal(BigDecimal gastoMensal) {
		this.gastoMensal = gastoMensal;
	}
	
	@ManyToOne
	@JoinColumn(name="cliente_id")
	public Cliente getCliente() {
		return cliente;
	}
	public void setCliente(Cliente cliente) {
		this.cliente = cliente;
	}
	
	@OneToMany(mappedBy="conta", fetch=FetchType.EAGER,cascade={CascadeType.REFRESH})
	public Collection<Pedido> getPedidos() {
		return pedidos;
	}
	public void setPedidos(Collection<Pedido> pedidos) {
		this.pedidos = pedidos;
	}
}

package com.analisecredito.entity;

import java.io.Serializable;
import java.math.BigDecimal;

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

@Entity
public class Pedido implements Serializable {
	
	private static final long serialVersionUID = -3776478377112586958L;
	public static final Integer APROVADO = 1;
	public static final Integer AGUARDANDO_APROVACAO = 2;
	public static final Integer REJEITADO = 3;
	
	private Long id;
	private BigDecimal valorCredito;
	private BigDecimal rendaMensal;
	private BigDecimal gastoMensal;
	private BigDecimal patrimonio;
	private Integer qtdeMesesPagamento;
	private Integer status;
	private Conta conta;
	
	
	@Id
	@GeneratedValue(strategy=GenerationType.IDENTITY)
	public Long getId() {
		return id;
	}
	public void setId(Long id) {
		this.id = id;
	}
	public BigDecimal getValorCredito() {
		return valorCredito;
	}
	public void setValorCredito(BigDecimal valorCredito) {
		this.valorCredito = valorCredito;
	}
	public BigDecimal getRendaMensal() {
		return rendaMensal;
	}
	public void setRendaMensal(BigDecimal rendaMensal) {
		this.rendaMensal = rendaMensal;
	}
	public BigDecimal getGastoMensal() {
		return gastoMensal;
	}
	public void setGastoMensal(BigDecimal gastoMensal) {
		this.gastoMensal = gastoMensal;
	}
	public BigDecimal getPatrimonio() {
		return patrimonio;
	}
	public void setPatrimonio(BigDecimal patrimonio) {
		this.patrimonio = patrimonio;
	}
	public Integer getQtdeMesesPagamento() {
		return qtdeMesesPagamento;
	}
	public void setQtdeMesesPagamento(Integer qtdeMesesPagamento) {
		this.qtdeMesesPagamento = qtdeMesesPagamento;
	}
	public Integer getStatus() {
		return status;
	}
	public void setStatus(Integer status) {
		this.status = status;
	}
	
	@ManyToOne(fetch=FetchType.EAGER)	
	public Conta getConta() {
		return conta;
	}
	public void setConta(Conta conta) {
		this.conta = conta;
	}
}