Função com parametro do tipo List  XML
Índice dos Fóruns » Persistência: Hibernate, JPA, JDBC e outros
Autor Mensagem
jeroqueiroz
Virtual Machine Man
[Avatar]

Membro desde: 15/05/2007 22:07:24
Mensagens: 522
Localização: Bahia
Offline

Caros,

Estou com uma query onde traz os registros corretamente, porém preciso verificar agora se estes registros trazidos pela query satisfaz uma condição.

Pensei em ter uma função que passo o resultado desta query como parametro e retorne uma lista com os registros que satisfazem esta condição.

Alguma dica de função que recebe uma lista e retorna uma lista ou alguma outra dica de como fazer isso?

qualquer ajuda e valida..

desde já agradeço.

Att,
Jeremias Santos - http://twitter.com/jeroqueiroz
JavaC - Java Community - http://www.javac.com.br
Twitter Fórum JavaC - http://twitter.com/javac_forum
[Email] [WWW] [Yahoo!] [MSN]
vagner.oliveira2
Debugger

Membro desde: 31/08/2007 09:43:32
Mensagens: 57
Offline

Você não consegue retornar esta lista já em seu select com uma clausula where?

SCJP 5.0
SCWCD 5.0
SCBCD 5.0
[MSN]
sergiotaborda
GUJ Expert
[Avatar]

Membro desde: 22/03/2005 20:57:48
Mensagens: 3433
Offline

jeroqueiroz wrote:Caros,

Estou com uma query onde traz os registros corretamente, porém preciso verificar agora se estes registros trazidos pela query satisfaz uma condição.

Pensei em ter uma função que passo o resultado desta query como parametro e retorne uma lista com os registros que satisfazem esta condição.

Alguma dica de função que recebe uma lista e retorna uma lista ou alguma outra dica de como fazer isso?

qualquer ajuda e valida..



Supondo que a condição não pode ser testada via SQL de forma a filtrar os objetos no banco, a forma padrão de fazer isto é usar um filtro assim



Quem passa no filtro é quem fizer o método accept retornar true. Quem passar é adicionado ao resultado.
Este modelo permite que vc use qualquer tipo de coleção, não apenas list.

Se vc quer apenas remover quem não passar o filtro e souber que a coleção é editável, vc pode fazer assim (que é mais rápido)



Por exemplo, obter apenas nomes começados por A


This message was edited 1 time. Last update was at 08/03/2010 12:52:33


Criando sua própria API de Validação



Blog do MiddleHeaven
[WWW]
jeroqueiroz
Virtual Machine Man
[Avatar]

Membro desde: 15/05/2007 22:07:24
Mensagens: 522
Localização: Bahia
Offline

O que preciso fazer pode ser feito pelo banco mesmo....

Não vejo a possibilidade de tratar na própria query, devido este query q tenho ele busca em uma tabela de histórico, onde um mesmo documento pode ter vários registros sendo que tenho q ver se o mais atual esta com um determinado status (tipo = 1), sendo que se o maior registro deste documento for com status (tipo = 2) ele não traz, ou seja não posso colocar na query q ele pegue com tipo =1 porque ele vai trazer porém não será o maior registro, pois o maior já esta com o status tipo=2.

Então pensei em trazer os maiores registro passar pra uma função que verifica se o satus dos trazidos e igual a 1.

mais alguma dica..

Att,
Jeremias Santos - http://twitter.com/jeroqueiroz
JavaC - Java Community - http://www.javac.com.br
Twitter Fórum JavaC - http://twitter.com/javac_forum
[Email] [WWW] [Yahoo!] [MSN]
sergiotaborda
GUJ Expert
[Avatar]

Membro desde: 22/03/2005 20:57:48
Mensagens: 3433
Offline

jeroqueiroz wrote:O que preciso fazer pode ser feito pelo banco mesmo....

Não vejo a possibilidade de tratar na própria query, devido este query q tenho ele busca em uma tabela de histórico, onde um mesmo documento pode ter vários registros sendo que tenho q ver se o mais atual esta com um determinado status (tipo = 1), sendo que se o maior registro deste documento for com status (tipo = 2) ele não traz, ou seja não posso colocar na query q ele pegue com tipo =1 porque ele vai trazer porém não será o maior registro, pois o maior já esta com o status tipo=2.

Então pensei em trazer os maiores registro passar pra uma função que verifica se o satus dos trazidos e igual a 1.

mais alguma dica..


Porque vc não pode pedir o maior registro cujo tipo é 1 ? (Select * from T where tipo = 1 and date in select max(date) from T)

Criando sua própria API de Validação



Blog do MiddleHeaven
[WWW]
jeroqueiroz
Virtual Machine Man
[Avatar]

Membro desde: 15/05/2007 22:07:24
Mensagens: 522
Localização: Bahia
Offline

Porque ele vai encontrar este registro que to procurando, sendo que na verdade o que tem a maior data não é do tipo 1, e sim do tipo 3.

Ou seja porque o registro tipo 1 existe.. devido ser uma tabela de histórico.

Att,
Jeremias Santos - http://twitter.com/jeroqueiroz
JavaC - Java Community - http://www.javac.com.br
Twitter Fórum JavaC - http://twitter.com/javac_forum
[Email] [WWW] [Yahoo!] [MSN]
clone_zealot
JavaEvangelist

Membro desde: 21/11/2004 16:40:00
Mensagens: 424
Offline

Que banco vc utiliza?
Caso for Oracle, vc pode tentar usar as funções analíticas do Oracle.
Funções analíticas, diferentemente de comandos SQL normal, utilizam o resultado de uma query e fazem filtros nos resultados.
É uma funcionalidade muito interessante e muito útil.
Link:
http://www.orafaq.com/node/55

"Não amo a espada por sua agudez,
não amo a flecha por sua rapidez,
não amo o homem por sua glória,
amo sim, tudo o que eles defendem"
Faramir, Príncipe de Ithilien
 
Índice dos Fóruns » Persistência: Hibernate, JPA, JDBC e outros
Ir para:   
Powered by JForum 2.1.8 © JForum Team