[hibernate-issues] [Hibernate-JIRA] Created: (HHH-4449) NPE during inserting new audited entity with reference to another proxy entity if proxy.lazyInitializer.session is null

Eugene Goroschenya (JIRA) noreply at atlassian.com
Fri Sep 18 10:21:50 EDT 2009


NPE during inserting new audited entity with reference to another proxy entity if proxy.lazyInitializer.session is null
-----------------------------------------------------------------------------------------------------------------------

                 Key: HHH-4449
                 URL: http://opensource.atlassian.com/projects/hibernate/browse/HHH-4449
             Project: Hibernate Core
          Issue Type: Bug
          Components: envers
    Affects Versions: 3.5.0.Beta-1, 3.3.2
            Reporter: Eugene Goroschenya


NPE during inserting new audited entity with reference to another proxy entity if proxy.lazyInitializer.session is null

java.lang.NullPointerException
	at org.hibernate.envers.tools.Tools.getTargetFromProxy(Tools.java:74)
	at org.hibernate.envers.event.AuditEventListener.generateBidirectionalCollectionChangeWorkUnits(AuditEventListener.java:108)
	at org.hibernate.envers.event.AuditEventListener.onPostInsert(AuditEventListener.java:152)
	at org.hibernate.action.EntityIdentityInsertAction.postInsert(EntityIdentityInsertAction.java:113)
	at org.hibernate.action.EntityIdentityInsertAction.execute(EntityIdentityInsertAction.java:89)
	at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:279)
	at org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:321)
	at org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:204)
	at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:130)
	at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:210)
	at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:195)
	at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.performSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:117)
	at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:93)
	at com.jcatalog.core.persistence.hibernate.HibernateSaveOrUpdateListener.onSaveOrUpdate(HibernateSaveOrUpdateListener.java:31)
	at org.hibernate.impl.SessionImpl.fireSaveOrUpdate(SessionImpl.java:535)
	at org.hibernate.impl.SessionImpl.saveOrUpdate(SessionImpl.java:527)
	at org.hibernate.engine.CascadingAction$5.cascade(CascadingAction.java:241)
	at org.hibernate.engine.Cascade.cascadeToOne(Cascade.java:292)
	at org.hibernate.engine.Cascade.cascadeAssociation(Cascade.java:240)
	at org.hibernate.engine.Cascade.cascadeProperty(Cascade.java:193)
	at org.hibernate.engine.Cascade.cascadeCollectionElements(Cascade.java:320)
	at org.hibernate.engine.Cascade.cascadeCollection(Cascade.java:266)
	at org.hibernate.engine.Cascade.cascadeAssociation(Cascade.java:243)
	at org.hibernate.engine.Cascade.cascadeProperty(Cascade.java:193)
	at org.hibernate.engine.Cascade.cascade(Cascade.java:154)
	at org.hibernate.event.def.AbstractSaveEventListener.cascadeAfterSave(AbstractSaveEventListener.java:479)
	at org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:357)
	at org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:204)
	at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:130)
	at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:210)
	at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:195)
	at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.performSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:117)
	at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:93)
	at com.jcatalog.core.persistence.hibernate.HibernateSaveOrUpdateListener.onSaveOrUpdate(HibernateSaveOrUpdateListener.java:31)
	at org.hibernate.impl.SessionImpl.fireSaveOrUpdate(SessionImpl.java:535)
	at org.hibernate.impl.SessionImpl.saveOrUpdate(SessionImpl.java:527)
	at org.hibernate.impl.SessionImpl.saveOrUpdate(SessionImpl.java:523)
	at org.springframework.orm.hibernate3.HibernateTemplate$16.doInHibernate(HibernateTemplate.java:747)
	at org.springframework.orm.hibernate3.HibernateTemplate.doExecute(HibernateTemplate.java:419)
	at org.springframework.orm.hibernate3.HibernateTemplate.executeWithNativeSession(HibernateTemplate.java:374)
	at org.springframework.orm.hibernate3.HibernateTemplate.saveOrUpdate(HibernateTemplate.java:744)
	at com.jcatalog.jsfeditor.facade.HibernateEditorFacade.save(HibernateEditorFacade.java:33)

It seems It happens when hibernate session was cleared so proxy.lazyInitializer.session is set to null but this object can be used later as refernce in other entity.
Just for information such use case works OK with hibernate without Envers as far as we not try call getters of proxy with null session.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://opensource.atlassian.com/projects/hibernate/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        


More information about the hibernate-issues mailing list