Using "fetch" in HQL tells hibernate to load the collection items as a join. You should not mix that with restrictions on the collection. I suppose that the query works fine if you remove both or at least the second "fetch".
From the doc:
Quote:
A fetch join does not usually need to assign an alias, because the associated objects should not be used in the where clause (or any other clause). Also, the associated objects are not returned directly in the query results. Instead, they may be accessed via the parent object.
It is possible to create a cartesian product by join fetching more than one collection in a query, so take care in this case. Join fetching multiple collection roles is also disabled for bag mappings. Note also that the fetch construct may not be used in queries called using Enumerable(). Finally, note that full join fetch and right join fetch are not meaningful.
from
http://www.nhforge.org/doc/nh/en/index.html#queryhql-joins