Have you read the section on fetching strategies in the Hibernate docs (
http://www.hibernate.org/hib_docs/v3/reference/en/html_single/#performance-fetching-custom)? This may help for your problem.
I believe that HQL queries do not use the lazy or fetch settings in the mapping files, so if you wish to bring back the role you'll need a query that looks something like the following:
Code:
from User user left join fetch user.currentRole
Your class may not be being lazily loaded if the class is final or any of its methods are final. Also, you may want to manually specify the proxy class for the Role class, in the Role mapping file - you can just set this to the class itself, although Hibernate should be doing this automatically. Also ensure you haven't turned off CGLIB proxies, via the hibernate property file.