JPA: Pivot e Unpivot

6 respostas
E

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)

6 Respostas

D

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)


Mas não são recursos dos bancos de dados, como SQL Server e Oracle 11g? Nem no Oracle 10g tem isso.

E

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.

D

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.

E

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.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…

H

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)

E

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

Criado 21 de junho de 2012
Ultima resposta 21 de jun. de 2012
Respostas 6
Participantes 3