OK, This is a question about Spring JPA.
Entities in JPA exist in one of 2 primary states: attached and detached. While they are attached,
you should be able to retrieve any lazy-fetched item or item property by simply using the "get" methods with no query coding at all.
When you are detached, attempts to fetch lazy items will return a null for simple objects and a special "invalid" collection for x-to-many references.
The easiest way to avoid that problem is to force-fetch the lazy items that interest you before you detach. You can do that by simply doing a "get" on the lazy object or one of its properties. You don't have to use what you fetched, it's the fetching that matters, since it forces the lazy load to actually load.
Alas, once detached, if you need a lazy value, the only way to get it is to re-attach (via a merge()) and then force-fetch. Note that merge returns a different object than what you pass it, even though they both look like the same object. The merge return object is the one with the magic in it.