Subconsulta em HQL

Olá, estou tentando fazer a seguinte query (no EclipseLink):

Query q = em.createQuery( "SELECT " + " Sum(o.idClassification*o.foo)/Sum(o.foo)"+ "FROM (" + " SELECT " + " pc.dateCreation, " + " Avg(pc.idClassification) as idClassification" + " rownum**0.75 as foo" + " FROM ProductClassification pc" + " WHERE pc.product = :product" + " GROUP BY pc.dateCreation" + ") o");

Mas me sai o seguinte erro:

Creio que no fim da linha 03 ou no início da linha 04, deve haver um espaço, pois o parêntese ta colado com o from… )FROM.

então, ele está dizendo que o erro está no ‘(’, pelo que andei lendo, o problema é a subconsulta no FROM, que o HQL não suporta, mas não sei se é isso. Vou dar uma olhada nesse detalhe que você falou e logo posto a resposta.

tentei e não deu certo, alguém tem mais alguma sugestão???

Estou pensando em usar um xml com consulta nativa do banco se não der certo dessa forma…

Bom pessoal, com consulta nativa funcionou, agora em paralelo estou tentando fazer com subconsulta no from em jpql (do EclipseLink).

Eu estava olhando a documentação, diz que isso ainda não é suportado pelo JPQL (nem para o HQL), que está em estudo para adicionar em futuras versões do Framework. No caso, encontrei um problema muito parecido aqui: http://forums.oracle.com/forums/thread.jspa?threadID=260305

Nesse tópico ele menciona um bloco “with” (se me lembro bem, não é padrão SQL), eu tentei com esse bloco with também deu erro de sintaxe (no WITH mesmo). Alguém conhece alguma forma de fazer isso? Com CriteriaBuilder eu consigo? Não estou acostumado com o CriteriaBuilder, e acho que seria menos prático que com os named queries em lugares próprios. (não tentei ainda com CriteriaBuilder, ainda não sei se consigo fazer group by no CriteriaBuilder)

Mas, continuando a compartilhar os problemas referentes a isso, alguém saberia me informar 2 coisas:

  1. É possível usar named-native-query em XML quando todo o resto das definições de persistência estão em annotations? Tentei brevemente e não consegui reconhecer o XML. Com os seguintes passos
    1.1 Criei um ORM.xml, e referenciei ele no persistence.xml, dentro da persistence-unit
    1.2 No ORM.xml eu criei o contexto da entidade, e dentro da entidade defini os named-native-query que eu queria
    Entretanto, me retornava o erro de que não encontrava uma named-query com esse nome.
  2. É possível usar, em named-native-query índices do tipo “:produto” para os parâmetros? Só estou conseguindo com “?” e passar o índice do parâmetro, o “:produto” só consigo com named-query (em jpql)

Amigão, dá uma olhada na nesta sintaxe veja se ela te atende.
http://docs.jboss.org/hibernate/core/3.3/reference/en/html/queryhql.html#queryhql-examples