public void initialize(Serializable key, SessionImplementor session) throws HibernateException {

    LOG.debugf("Initializing collection: %s using named query: %s", persister.getRole(), queryName);

    // TODO: is there a more elegant way than downcasting?
    AbstractQueryImpl query = (AbstractQueryImpl) session.getNamedSQLQuery(queryName);
    if (query.getNamedParameters().length > 0) {
      query.setParameter(query.getNamedParameters()[0], key, persister.getKeyType());
    } else {
      query.setParameter(0, key, persister.getKeyType());
    }
    query.setCollectionKey(key).setFlushMode(FlushMode.MANUAL).list();
  }