I'm running into odd conditions, apparently because of the way iBATIS uses CGLIB for proxying and I'm wondering if it's just something I'm doing wrong or if there's a workaround.
While an entity may *appear* to return null from a getter (null is actually the proxied result), (entity.getFoo() == null) surprisingly evaluates to false, because getFoo() returns the proxy, which is non-null, not the proxied result. Some sample code may make this a little clearer: // Entity has a relation to Foo, which may be null - foo is lazily loaded Entity entity = dao.getById(1); // In the debugger the following evaluates to Foo$$EnhancerByCGLIB$$12345678 // with a value of null: entity.getFoo(); // And then... entity.getFoo() == null; // ...evaluates to false! // And so does this: Foo foo = entity.getFoo(); foo == null; // false Is my approach wrong? Is there a way around it, other than not using lazy loading? Thanks for any help.
