JPQL - Buscando um conjunto dentro de outro

1 resposta
israel.fonseca

Olá assumindo o seguinte caso:

Um Fluxo tem uma conjunto de Categorias.

class Fluxo{ Set<Categorias> categorias; }

Como faço para buscar um fluxo que contenha pelo menos 1 determinada categoria? Por exemplo se eu tenho:

Fluxo 1
Possui categorias [a,b,c]

Fluxo 2
Possui categorias [a,b]

Fluxo 3
Possui categorias [a]

E para o meu método de busca eu passo um Set com as categorias a e b.

E o retorno me deve ser uma lista contendo os Fluxos 1 e 2, já que ambos possuem as categorias “a” e “b”. Mas caso eu passasse um set com apenas a categoria “a”, ele me retornaria os 3 fluxos já que todos possuem ao menos a categoria “a”. E caso eu passase “a” e “c” para o método apenas o Fluxo 1 seria retornado, pois os fluxos 1 e 2 não possuem a categoria “c”.

Como posso fazer isso de forma eficiente numa JPQL?

Obrigado,

Israel

1 Resposta

C

Olá caro Israel.

Veja como é simples retornar os valores que você quer através de uma pura query sql (oracle).

Fiz isso supondo que você tem uma tabela FLUXO, FLUXO_CATEGORIA e CATEGORIA. Sendo FLUXO_CATEGORIA uma entidade associativa, ela contém os Códigos dos Fluxos e das Categorias (que serão o parametro principal da query).

Através da operação IN é possível obter o resultado esperado, ou seja, nesse caso teriamos os Fluxos que tem a categoria de código 1 e 2.

Como fazer isso em JPQL já é algo além dos meus conhecimentos.

Abraço e boa sorte.

Criado 20 de abril de 2009
Ultima resposta 29 de abr. de 2009
Respostas 1
Participantes 2