Fórum Persistência: problemas ao tentar persistir entidade... #400931

12/05/2011

0

Ao tentar persistir um objeto, me retorna o erro:

javax.persistence.PersistenceException: org.hibernate.PersistentObjectException: detached entity passed to persist: br.org.isgh.compras.beans.Recebimento
    at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1235)
    at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1168)
    at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1174)
    at org.hibernate.ejb.AbstractEntityManagerImpl.persist(AbstractEntityManagerImpl.java:674)
    at br.org.isgh.compras.facade.impl.RecebimentoFacadeImpl.inserirRecebimento(RecebimentoFacadeImpl.java:231)
    at br.org.isgh.compras.forms.RecebimentoForm.inserir(RecebimentoForm.java:409)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
...
Caused by: org.hibernate.PersistentObjectException: detached entity passed to persist: br.org.isgh.compras.beans.Recebimento
    at org.hibernate.event.def.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:127)
    at org.hibernate.event.def.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:61)
    at org.hibernate.impl.SessionImpl.firePersist(SessionImpl.java:800)
    at org.hibernate.impl.SessionImpl.persist(SessionImpl.java:774)
    at org.hibernate.impl.SessionImpl.persist(SessionImpl.java:778)
    at org.hibernate.ejb.AbstractEntityManagerImpl.persist(AbstractEntityManagerImpl.java:668)


Entidade:
package br.org.isgh.compras.beans;

import java.io.Serializable;
import javax.persistence.*;

import java.util.Date;
import java.util.Set;

/**
 * The persistent class for the T_SETOR database table.
 *
 */

@SuppressWarnings("serial")
@Entity
@SequenceGenerator(name = "SEQ_RECEBIMENTO", sequenceName = "S_RECEBIMENTO", allocationSize = 1)
@Table(name = "T_RECEBIMENTO")
public class Recebimento implements Serializable {

    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SEQ_RECEBIMENTO")
    @Column(name = "isn_recebimento")
    private Integer isnRecebimento;
   
    @ManyToOne
    @JoinColumn(name = "ISN_PROCESSO", referencedColumnName = "ISN_PROCESSO")
    private Processo processo;
   
    @ManyToOne
    @JoinColumn(name = "ISN_FORNECEDOR", referencedColumnName = "ISN_FORNECEDOR")
    private Fornecedor fornecedor;

    @Column(name = "VLR_NF")
    private Double vlrNf;
   
    @Column(name = "VLR_DESCONTO")
    private Double vlrDesconto;
   
    @Column(name = "VLR_IPI")
    private Double vlrIpi;
   
    @Column(name = "DSC_JUSTRECEBEINCOMPLETO")
    private String dscJustRecebeIncompleto;

    @Column(name = "NUM_NF")
    private Integer numNf;
   
    @Temporal(TemporalType.DATE)
    @Column(name = "DAT_CADASTRO")
    private Date datCadastro;
   
    @Temporal(TemporalType.DATE)
    @Column(name = "DAT_EMISSAO_NF")
    private Date datEmissaoNf;
   
    //fetch=FetchType.EAGER --> quando carregar um rececebimento, carrega também os itens do recebimento
    @OneToMany(mappedBy = "recebimento", fetch=FetchType.EAGER, cascade=CascadeType.PERSIST)
    private Set<RecebimentoItem> recebimentoItem;
   
    @Column(name = "DSC_INFO_ADICIONAL")
    private String dscInfoAdicional;
   
    @Column(name = "ISN_USUARIO")
    private Integer isnUsuario;
   
    @Column(name = "DSC_TIPO_RECEBIMENTO")
    private String dscTipoRecebimento;
   
    @Column(name = "DSC_TIPO_DOCUMENTO")
    private String dscTipoDocumento;
   
    @Column(name = "DSC_USUARIO")
    private String dscUsuario;
   
    @Column(name = "DSC_TRANSPORTADORA")
    private String dscTransportadora;
   
    @Column(name = "FLG_RECEBIDO")
    private Boolean flgRecebido;
   
    @Column(name = "FLG_CANCELADO")
    private Boolean flgCancelado;
Barcelos.java

Barcelos.java

Responder

Post mais votado

12/05/2011

Você por acaso está setando um ID na entidade? Como a estratégia é para geração automática de ids através de sequences isso pode trazer problemas (antes de persistir chame recebimento.setId(null)).
Se você realmente está buscando fazer um update, tente o método merge. 

Anthony Accioly

Anthony Accioly
Responder

Gostei + 3

Mais Posts

12/05/2011

Barcelos.java

era só isso mesmo... antes de mandar para persistência eu setei null no id da entidade.

Muito Obrigado... valeu mesmo
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar