[hibernate-issues] [Hibernate-JIRA] Closed: (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
Tue Nov 3 12:55:59 EST 2009


     [ http://opensource.atlassian.com/projects/hibernate/browse/HHH-4449?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Eugene Goroschenya closed HHH-4449.
-----------------------------------


> 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.3.2, 3.5.0.Beta-1
>            Reporter: Eugene Goroschenya
>            Assignee: Adam Warski
>             Fix For: 3.5.0-Beta-2
>
>         Attachments: HHH-4449_fix.patch
>
>
> 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