Filtrowane po wielu opcjonalnych atrybutach

0

Hej! W jaki sposób obsłużyć filtrowanie po wielu opcjonalnych atrybutach? Nie chciałbym dla każdego zestawienia (A), (A, B), (A,B C), (B, C)... pisać osobnego query.
Na ten moment trafiłem na coś takiego jak Query By Example, tylko czy to rozwiązanie sprawdzi się przy większym projekcie? To znaczy czy stworzona sqlka przez ten mechanizm nie będzie jakaś dzika albo nie będę strzelać dziesięć razy do bazy?
Jak wy byście do tego podeszli?

0
  1. JOOQ i klasy Condition
  2. W Spring Data w adnotacji @Query dla prostych przypadków można użyć coś takiego - WHERE (:argument IS NULL OR table.value = :argument)
0
MM93 napisał(a):

Uzylbym Criteria API.
https://stackoverflow.com/questions/12199433/jpa-criteria-api-with-multiple-parameters

Na pierwszy rzut oka wydaje się, że faktycznie w elegancki sposób załatwi mój problem. Będę czytał o tym, dzięki!

CountZero napisał(a):
  1. JOOQ i klasy Condition
  2. W Spring Data w adnotacji @Query dla prostych przypadków można użyć coś takiego - WHERE (:argument IS NULL OR table.value = :argument)
  1. Zależy mi na tym, żeby nie dodawać żadnych nowych zależności, bibliotek
  2. W mojej sytuacji @Query jest bezużyteczne. Skoro mam 5 opcjonalnych atrybutów po których będę filtrował to musiałbym napisać 24 zapytania żeby obsłużyć każdy przypadek.
2
  1. Jak uważasz, imo Criteria API jest mega do d**y w porównaniu z JOOQiem, może dla prostego przypadku wystarczy.
  2. Czemu? Jeśli argument jest nullem to po prostu jest ignorowany w zapytaniu. Metody będzie się używać w taki sposób i to będzie działać - query(null, null, null, 1, 2) , query(1, 2, null, null, null) itd.

EDIT: To drugie rozwiązanie oczywiście nie tyczy się tylko @Query a każdego SQL i JPQL'a.

0
  1. Tu nawet nie chodzi o to co uważam, tylko o to na co pozwala klient. :D

  2. Faktycznie. Moje roztargnienie. Dziękuję! :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1