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;
}
}