I have the same or a similar problem.
Code:
Professor p = student.getClass().getProfessor();
if(p==null)
//FAIL
It is difficult to diagnose but it happens about 80% of the time when executing the code and it has NEVER happened if I step through the code via the debugger. This leads me to think that hibernate is loading the proxy objects with a separate thread and maybe there is a thread join problem if you are lazy loading through multiple objects.
I have never received a null if I try to lazy load one class
i.e. Class c = student.getClass() is never null.