Author: steve.ebersole(a)jboss.com
Date: 2010-01-13 19:04:32 -0500 (Wed, 13 Jan 2010)
New Revision: 18548
Modified:
core/trunk/envers/src/main/java/org/hibernate/envers/tools/Tools.java
Log:
HHH-4791 - Invalid assumption made in org.hibernate.envers.tools.Tools#getTargetFromProxy
Modified: core/trunk/envers/src/main/java/org/hibernate/envers/tools/Tools.java
===================================================================
--- core/trunk/envers/src/main/java/org/hibernate/envers/tools/Tools.java 2010-01-13
23:59:03 UTC (rev 18547)
+++ core/trunk/envers/src/main/java/org/hibernate/envers/tools/Tools.java 2010-01-14
00:04:32 UTC (rev 18548)
@@ -73,12 +73,22 @@
}
SessionImplementor sessionImplementor =
proxy.getHibernateLazyInitializer().getSession();
- Session tempSession = sessionImplementor==null ?
sessionFactoryImplementor.openTemporarySession() :
sessionImplementor.getFactory().openTemporarySession();
+ Session tempSession = sessionImplementor==null
+ ? sessionFactoryImplementor.openTemporarySession()
+ : sessionImplementor.getFactory().openTemporarySession();
try {
- proxy.getHibernateLazyInitializer().setSession((SessionImplementor)
tempSession);
- proxy.getHibernateLazyInitializer().initialize();
- return proxy.getHibernateLazyInitializer().getImplementation();
- } finally {
+ Object target = tempSession.get(
+ proxy.getHibernateLazyInitializer().getEntityName(),
+ proxy.getHibernateLazyInitializer().getIdentifier()
+ );
+ proxy.getHibernateLazyInitializer().setImplementation( target );
+ return target;
+// adam, changes in AbstractLazyInitializer render this no longer valid...
+// proxy.getHibernateLazyInitializer().setSession((SessionImplementor)
tempSession);
+// proxy.getHibernateLazyInitializer().initialize();
+// return proxy.getHibernateLazyInitializer().getImplementation();
+ }
+ finally {
tempSession.close();
}
}
Show replies by date