Persistência: problemas ao tentar persistir entidade...
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;
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
Curtidas 0
Melhor post
Anthony Accioly
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.
Se você realmente está buscando fazer um update, tente o método merge.
GOSTEI 3
Mais Respostas
Barcelos.java
12/05/2011
era só isso mesmo... antes de mandar para persistência eu setei null no id da entidade.
Muito Obrigado... valeu mesmo
Muito Obrigado... valeu mesmo
GOSTEI 0