Galera é o seguinte, eu quero fazer uma consulta em JAVA utilizando o criteria
Se falta, vai ter que criar a associação.
Por que se complicar se é mais prático e eficiente escrever SQL diretamente? Mapeando o resultado diretamente para uma classe específica que atenda essa funcionalidade de consulta. Inclusive o SQL você já fez.
É mais importante atender a funcionalidade do cliente ou o padrão de tecnologia engessado?
Criteria trabalha em cima das associações mapeadas com o modelo orientado a objetos. Já que você é o origado a usar Criteria, por que não cria a associação que falta?