StackOverflowError with Hibernate

I get StackOverflowError

when I try to merge with EntityManager

. Sorry I only post the stack and the entity I am trying to store, but I am not very good at this, please comment on the code you might need.

You will find an exception in this link (too long to post): http://jpst.it/vmGz . The repeating part is below:

...
at org.hibernate.persister.entity.AbstractEntityPersister.load(AbstractEntityPersister.java:3887)
at org.hibernate.event.internal.DefaultLoadEventListener.loadFromDatasource(DefaultLoadEventListener.java:458)
at org.hibernate.event.internal.DefaultLoadEventListener.doLoad(DefaultLoadEventListener.java:427)
at org.hibernate.event.internal.DefaultLoadEventListener.load(DefaultLoadEventListener.java:204)
at org.hibernate.event.internal.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:260)
at org.hibernate.event.internal.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:148)
at org.hibernate.internal.SessionImpl.fireLoad(SessionImpl.java:1078)
at org.hibernate.internal.SessionImpl.internalLoad(SessionImpl.java:1005)
at org.hibernate.type.EntityType.resolveIdentifier(EntityType.java:651)
at org.hibernate.type.EntityType.resolve(EntityType.java:471)
at org.hibernate.type.ComponentType.resolve(ComponentType.java:666)
at org.hibernate.loader.Loader.extractKeysFromResultSet(Loader.java:828)
at org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:707)
at org.hibernate.loader.Loader.processResultSet(Loader.java:940)
at org.hibernate.loader.Loader.doQuery(Loader.java:910)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:341)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:311)
at org.hibernate.loader.Loader.loadEntity(Loader.java:2111)
at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:82)
at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:72)
at org.hibernate.persister.entity.AbstractEntityPersister.load(AbstractEntityPersister.java:3887)
...

      

Here's the object:

@Entity
@Table(name = "transaccional.auditoria")
public class Auditoria {

    @Id
    @GeneratedValue(strategy=GenerationType.AUTO, generator="transaccional.auditoria_id_seq")
    @SequenceGenerator(name="transaccional.auditoria_id_seq", sequenceName="transaccional.auditoria_id_seq")
    @Column(name = "id")
    private Integer id;

    @OneToOne
    @JoinColumn(name="atencion_id",referencedColumnName="id")
    private Atencion atencion;

    @OneToOne
    @JoinColumn(name="prescripcion_id",referencedColumnName="id")
    private Prescripcion prescripcion;

    @OneToOne
    @JoinColumn(name="prestador_id",referencedColumnName="id")
    private Prestador prestador;

    @OneToOne
    @JoinColumn(name="tipo_transaccion_id",referencedColumnName="id")
    private TipoTransaccion tipoTransaccion;

    @OneToOne
    @JoinColumn(name="nomenclador_practica_id",referencedColumnName="id")
    private PracticaNomenclada nomencladorPractica;


    @OneToOne
    @JoinColumn(name="auditor_actual_id",referencedColumnName="id")
    private Auditor auditorActual;

    @Column(name = "auditor_revision")
    private String auditorRevision;

    @OneToOne
    @JoinColumn(name="estado_auditoria_id",referencedColumnName="id")
    private EstadoAuditoria estadoAuditoria;

    @Temporal(TemporalType.TIMESTAMP)
    @Column(name = "fecha_final")
    private Date fechaFinal;

    @Column(name = "cantidad_items")
    private Integer cantidadItems;

    @Column(name = "en_revision")
    private Boolean enRevision;

    @Temporal(TemporalType.TIMESTAMP)
    @Column(name = "fecha_comienzo_revision")
    private Date fechaComienzoRevision;

    @OneToOne(cascade=CascadeType.ALL)
    @JoinColumn(name="ultimo_auditoria_detalle_id",referencedColumnName="id")
    private AuditoriaDetalle ultimoAuditoriaDetalle;  

    @Column(name = "es_anulado")
    private Boolean esAnulado;

    @Temporal(TemporalType.TIMESTAMP)
    @Column(name="fecha_insert")
    private Date fechaInsert;

    @Temporal(TemporalType.TIMESTAMP)
    @Column(name="fecha_delete")
    private Date fechaDelete;

    @Temporal(TemporalType.TIMESTAMP)
    @Column(name="fecha_update")
    private Date fechaUpdate;

    @Column(name="version")
    private int version;

    @Temporal(TemporalType.TIMESTAMP)
    @Column(name="fecha_auditoria")
    private Date fechaAuditoria;

    @OneToOne(cascade=CascadeType.ALL)
    @JoinColumn(name="motivo_auditoria_id",referencedColumnName="id")
    private MotivoAuditoria motivoAuditoria;  

    @Column
    private String autorizacion;
    @Column
    private String origen;

    @Column(name="nro_autorizacion")
    private String nroAutorizacion;

      

Here is the service where this happens:

@Transactional
@Override
public void update(Auditoria auditoria) {
    entityManager.merge(auditoria);
}

      

+3


source to share





All Articles