Clinton,
I can see your issue here, but it is certainly a surprise when a valid
combination of config settings (and probably one that would be quite
common) starts throwing exceptions. Especially as it is undocumented.
I also agree that there are other things that you can take care of to
speed up before you might end up with this combination of settings (N
+1 being the obvious example), but this would seem to me to be an
optimal version. Allowing you to both load those objects that are used
all the time through the cache (and within other objects) without
performance hit, whilst only loading those unfortunate N+1 queries
when required.
It also leads then to another question. Why have the both lazyLoading
and aggressiveLazyLoading settings at all. Since we can't have them
set to true and false respectively. Either they are both false and all
objects are loaded albeit without the cglib proxy or they are both
true and all objects are loaded.