Skip to content

Instantly share code, notes, and snippets.

@gsmet
Created March 20, 2014 12:53
Show Gist options
  • Save gsmet/9663149 to your computer and use it in GitHub Desktop.
Save gsmet/9663149 to your computer and use it in GitHub Desktop.
diff --git a/hibernate-core/src/main/java/org/hibernate/engine/internal/StatefulPersistenceContext.java b/hibernate-core/src/main/java/org/hibernate/engine/internal/StatefulPersistenceContext.java
index 8ff72cd..8896aef 100644
--- a/hibernate-core/src/main/java/org/hibernate/engine/internal/StatefulPersistenceContext.java
+++ b/hibernate-core/src/main/java/org/hibernate/engine/internal/StatefulPersistenceContext.java
@@ -644,9 +644,18 @@
"proxy not of type HibernateProxy; it is " + proxyOrig.getClass()
);
}
+
+ HibernateProxy hibernateProxyOrig = (HibernateProxy) proxyOrig ;
+ HibernateProxy hibernateProxy = ( (HibernateProxy) proxy );
+
// set the read-only/modifiable mode in the new proxy to what it was in the original proxy
- final boolean readOnlyOrig = ( (HibernateProxy) proxyOrig ).getHibernateLazyInitializer().isReadOnly();
- ( (HibernateProxy) proxy ).getHibernateLazyInitializer().setReadOnly( readOnlyOrig );
+ final boolean readOnlyOrig = hibernateProxyOrig.getHibernateLazyInitializer().isReadOnly();
+ hibernateProxy.getHibernateLazyInitializer().setReadOnly( readOnlyOrig );
+
+ // if the original proxy was already initialized, set the implementation of the new proxy
+ if ( !hibernateProxyOrig.getHibernateLazyInitializer().isUninitialized() ) {
+ hibernateProxy.getHibernateLazyInitializer().setImplementation( hibernateProxyOrig.getHibernateLazyInitializer().getImplementation() );
+ }
}
return proxy;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment