带有Hibernate的StackOverflowError

时间:2014-12-29 20:27:06

标签: hibernate jpa stack-overflow

当我尝试与StackOverflowError合并时,我收到EntityManager。很抱歉,我只发布了堆栈跟踪和我想要保留的实体,但我对此不太熟悉,请对您可能需要查看的代码发表评论。

在此链接中,您会发现异常(帖子太长):http://jpst.it/vmGz。重复部分如下:

...
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)
...

这是实体:

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

以下是发生这种情况的服务:

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

0 个答案:

没有答案