Are you using EJBs?
I've found this when I've passed an object across classloader boundaries (EJBs in different EARs in a container) and then try to access an association within the object. The Hibernate proxy object no longer holds the information necessary to lazily load the associated class. Either turn off lazy loading (not generally recommended) or don't retrieve the association, run the query again.
You need to add parameter "fetch = FetchType.EAGER" to your one-to-many relationship which returns a collection, and write code similar to the following in your session bean.
Cruise cruise = manager.find(Cruise.class, cruiseID);
Hope this will help