DATAMONGO-914 - Improve resolving of lazy-loading proxies for classes that override equals(…)/hashCode().
We now properly resolve lazy-loading proxies for @DBRef's when an overridden equals or hash code method is called with Spring 4. We fall back to our old Objenesis proxy generation in order to circumvent the default handling for overridden hashcCode() and equals(…) methods in CglibAopProxies generated by Spring 4.
If we detect that we run with Spring 4 we use the repacked Objenesis that is included in Spring 4. Previously the generated proxy used some generic hashCode() or equals(…) logic that did not trigger a proper lazy loading in such cases.
Original pull request: #171.
pull/172/head
Thomas Darimont12 years agocommitted byOliver Gierke
@ -138,7 +138,7 @@ public class DefaultDbRefResolver implements DbRefResolver {
@@ -138,7 +138,7 @@ public class DefaultDbRefResolver implements DbRefResolver {
proxyFactory.setProxyTargetClass(true);
proxyFactory.setTargetClass(propertyType);
if(IS_SPRING_4_OR_BETTER||!OBJENESIS_PRESENT){
if(!OBJENESIS_PRESENT){
proxyFactory.addAdvice(interceptor);
returnproxyFactory.getProxy();
}
@ -374,13 +374,25 @@ public class DefaultDbRefResolver implements DbRefResolver {
@@ -374,13 +374,25 @@ public class DefaultDbRefResolver implements DbRefResolver {
@ -390,9 +402,77 @@ public class DefaultDbRefResolver implements DbRefResolver {
@@ -390,9 +402,77 @@ public class DefaultDbRefResolver implements DbRefResolver {