List HQL funciona + não ordena

pessoal, tenho um HQL que funciona normalmente, mas ele não ordena da forma como eu peço.

this.sessao = new HibernateUtil().abreConexao();
        Query q = this.sessao.createQuery("from PotencialRealizado where " +
                "month(posicao)=:mes and " +
                "year(posicao)=:ano and " +
                "pref_super_e=:prefixo " +
                "and rownum = 1 " +
                "order by day(posicao) asc");
        q.setParameter("mes", mes);
        q.setParameter("ano", ano);
        q.setParameter("prefixo", prefixo);

se eu fizer isso ele começa desde o primeiro registro da base de dados, não do primeiro dia.
se eu trocar o order by por day(posicao)=1 ele vai me trazer corretamente o(s) registro(s) do dia 1.
o BD é o OracleXE.

Olá!
Vc mandou ele ordenar por dia order by day(posicao) asc, mas kd a coluna “day” ai na sua query? Não deveria puxar essa coluna tb?
[]s

Guevara, ao colocar day(posicao) ele vai extrair o dia do meu campo posicao. Exemplo:
supondo que a posição=2010-08-30

String hql = "from tabela order by day(posicao)"
//resultado = 30

se o campo correspondente for uma data, então ele já vai assumir e ordenar
o mesmo ocorre pra day e year, a própria base já reconhece

Entendi, não conhecia essa de extrair o dia, tenta colocando alias:

this.sessao = new HibernateUtil().abreConexao();
        Query q = this.sessao.createQuery("from PotencialRealizado p where " +
                "month(p.posicao)=:mes and " +
                "year(p.posicao)=:ano and " +
                "pref_super_e=:prefixo " +
                "and rownum = 1 " +
                "order by day(p.posicao) asc");
        q.setParameter("mes", mes);
        q.setParameter("ano", ano);
        q.setParameter("prefixo", prefixo);

[]s