[
http://opensource.atlassian.com/projects/hibernate/browse/HHH-5750?page=c...
]
Sven Rienstra commented on HHH-5750:
------------------------------------
I'm not using the Tools class directly, but after I inserted an audited object, an
other audited object had lost it's session and I identified this tools method as the
cause. I'll try to explain the scenario:
I have 2 classes Person and Target. Person has a list of targets. Target has a ManyToOne
relation to Person and Person has an OneToMany(mappedBy="person"). Both classes
are audited.
After I called saveOrUpdate to insert a new target, the session from all proxies in the
Person object are gone. So when I try to get the list with targets from the person, I get
a no session error.
-- Code fragment:
//Doel = target, Patient = person
//Patientmodel is a Wicket model holding a patient proxy
Doel doel = this.getModelObject();
doel.setZwipPatient(patientModel.getObject());
doelenService.saveOrUpdate(doel);
//Current workaround
hibernateService.getHibernateSession().evict(patientModel.getObject());
patientModel.detach(); <== Creates a new proxy
patientModel.getObject().getDoelen(); <==Breaks without workaround, because the Patient
proxy now contains an implementation linked to a closed session. (the temporary session
created in the tools method)
-- END
I Hope this clarifies the bug a bit. The only I reason I wrote the testcase this way is
because when I was debugging I found the session was removed from the PersistentBag by
this method in Tools.
Envers unset session on proxy
-----------------------------
Key: HHH-5750
URL:
http://opensource.atlassian.com/projects/hibernate/browse/HHH-5750
Project: Hibernate Core
Issue Type: Bug
Components: envers
Affects Versions: 3.6.0
Reporter: Sven Rienstra
Attachments: ToolsTest.java
A bug in envers Tools causes proxy objects to lose their session after post-insert
actions have been performed. The function Tools.getTargetFromProxy loads an instance of
the proxytarget with a temporary session, puts the instance into the proxy and finally
closes the session. After this all the persistentbags in the instance have lost their
session because it is closed. The attached testcase demonstrates this behavior.
I'm not sure how this should be fixed, but i guess the proxy should be reattached to
the old session after envers is done with it.
--
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....
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira