Zapytanie EJB NamedQuery

0

Witam mam pytanko

mam taką funkcję w EntityManger

public List<Product> getLastProdukt(int kategoria, int rodzaj)
{


}

Natomiast w klasie Product mam NamedQuery:

@NamedQuery (name="Product.getBykategoriaAndRodzaj" , query = "Select n from Product where kategoria=:kategory and rodzaj=:rodzaj");

I chodzi o to teraz , że potrzebuję dodać jeszcze warunek żeby wyszukiwało mi po językach a języki mają być podane jako wartość funkcji czyli ma być tak (ELanguage - enum):

public List<Product> getLastProduct(int kategoria, int rodzaj , **ELanguage[] language** )

i jak wiemy nie jest sprecyzowane ile języków przekażemy danej funkcji możemy 1 możemy 2 lub 3 itp....

Jak się taki problem rozwiązuje ?? czy da się zrobić takie zapytanie Named Query i dostosować je do wartości ?? czy może zostawić NamedQuery i dopiero w wynikach naszego zapytania wyszukiwać jeszcze po jezyku czyli:

public List<Product> getLastProdukt(int kategoria, int rodzaj,ELanguage[] elanguage)
{
       .......
       List<Product> resultList = query.getResultList();
       i tutaj dopisać warunek ???

}

Dziękuję za odpowiedzi

0

chyba jakoś tak:
SELECT n FROM Product n WHERE n.kategoria=:kategory AND n.rodzaj=:rodzaj AND n.language MEMBER OF :languages

0

Aha tak to się robi :) Dziękuję Ci bardzo za odpowiedź :)
Qurde Jboss wywala mi błąd jak dołożyłem MEMBER OF

MEMBER OF sprawdza czy dana wartość jest zawarta w danej kolekcji jak mniemam ??
ale ogólnie jest coś nie tam z namedQuery :/

jako languagesIds przekazuje List<INTEGER> ?? wiedz powinno działać ??

0

Spróbuj:
SELECT n FROM Product n WHERE n.kategoria=:kategory AND n.rodzaj=:rodzaj AND n.language IN (:languages)

Member of nie można tutaj chyba użyć:
http://download.oracle.com/docs/cd/E11035_01/kodo41/full/html/ejb3_langref.html
punkt 10.2.5.12
po prawej stronie musi być "collection_valued_path_expression", czyli np. "n.languages".

0

OK THX

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