JPA: Pivot e Unpivot

Olá,

Alguém sabe se existe algum método no JPA para se fazer Pivot/Unpivot dos resultados?

Assim, me refiro a transformar linhas em colunas e colunas em linhas, da mesma forma que o Pivot/Unpivot do Oracle (mas não esteja atrelado a nenhum banco específico)

[quote=evefuji]Olá,

Alguém sabe se existe algum método no JPA para se fazer Pivot/Unpivot dos resultados?

Assim, me refiro a transformar linhas em colunas e colunas em linhas, da mesma forma que o Pivot/Unpivot do Oracle (mas não esteja atrelado a nenhum banco específico)[/quote]
Mas não são recursos dos bancos de dados, como SQL Server e Oracle 11g? Nem no Oracle 10g tem isso.

esse pivot e unpivot é recurso específico do Oracle mesmo (mesmo o 10g, se me lembro bem, tem esse recurso), entretanto, eu queria saber se o JPA já não tem uma implementação própria para isso, que, por exemplo, pegue os possíveis valores das colunas em uma consulta, e em outra traga os valores “transpostos” de acordo como que queremos.

Camarada, isso não existe no Oracle 10g, somente no 11g. E no SQL Server também (ao menos algo com o mesmo conceito).
Semana passada discutíamos isso, eu e o DBA Oracle, pois precisávamos realizar consultas com uma complexidade que seriam adequadamente atendidas por pivot.
Enfim, JPA não possui, a não ser que seja um recurso do Hibernate, o que acho difícil, visto que é específico.

Camarada, isso não existe no Oracle 10g, somente no 11g. E no SQL Server também (ao menos algo com o mesmo conceito).
Semana passada discutíamos isso, eu e o DBA Oracle, pois precisávamos realizar consultas com uma complexidade que seriam adequadamente atendidas por pivot.
Enfim, JPA não possui, a não ser que seja um recurso do Hibernate, o que acho difícil, visto que é específico.[/quote]tens razão, faz um tempo que não trabalho com oracle 10g, não lembrava se já aparecia no release 2 ou não.

Valeu pela resposta, vou ter que construir algo a cerca disso mesmo então…

Dá para você utilizar nativeQuery e disparar direto no DB ou então você pode armazenar todo o resultado em array e fazer uma matriz.

Aí você inverte na unha! 8)

@jakefrog: é quase isso que vou fazer, vou montar uma criteriaQuery mesmo, para trazer o resultado em List<Object[]> e depois montar a saída.