It's worth noting that upon construction the DetachedCriteria is serializable, and only after it is executed the first time does it obtain the non-serializable values down deep in the object graph.