QueryObject é qualquer objeto cujo estado define a pesquisa que vc quer fazer.
Vc pode criar QueryObject simples do tipo javabean em que seta alguns campos e pronto. Exemplo
UserQuery uq = new UserQuery();
uq.setLogin("login');
uq.setActive(true);
User user = repository.findUser(uq);
Por vezes as pessoas se sentem tentadas a utilizar o proprio objeto de dominio ( user) para fazer este tipo de trabalho. Nesse caso o objeto de dominio assume tambem a responsabildiade de QueryObject e embora isso seja util a curto prazo não funciona sempre. O exemplo classico é procurar num intervalo de datas. O objeto de dominio só tem um campo data, logo não serve para esse propósito.
Vc pode criar QueryObjects mais complexos e mais genericos como que se fossem uma linguagem de pesquisa. Isso é o que o Hibernate faz com seus Criteria. Tudo depende do seu tempo, vontate, experiencia e paciencia.
Os QueryObjects podem servir em diversos niveis da aplicação. Vc pode utilizar-se deles para passar informações para o Repositorio. Nesse caso os QueryObjects são apenas de dominio. Ou seja, eles não contêm detalhes sobre persitencia ou algo assim. O repositorio irá interpretar esses dados e constuir a pesquisa para o DAO. Isso pode significa construir SQL ou outro tipo de QueryObject. Este parece ser o seu caso.
Nas classes de dominio vc cria o seu QueryObject e o popula com informações de pesquisa, o passa ao Repositorio. O reposiorio sabe que está usando hibernate e traduz esse QueryObject para um Criteria do Hibernate e o executa. O QeuryObject que foi enviado ao Repositorio tem total desconhecimento sobre o hibernate e seus criterias. Em opção o repositorio pode escrever HQL em vez de construir Criterias. O ponto é que o Repositorio tem que traduzir entre uns objetos e os outros. Aliás, é essa a sua função.
Com isto vc ganhar independencia do dominio, já que se mais tarde vc mudar para outro tipo de persistencia, (JPA por exemplo) vc terá que criar outro tipo deo objetos para executar as pesquisas, contudo seu repositorio continuará recebendo as mesmas informações e objetos e o seu dominio não muda uma virgula.