Zdravim,
pouzivam klasicke JPA pouze s TopLinkem.
Dost me ovsem mrzi, ze nemohu pouzit nejake Criteria API, jako je v hibernate.
Ten zpusob, ktery nabizi Hibernate se mi dost libi, ovsem nechci Hibernate jako
takove momentalne implementovat.
Radeji bych pouzil neco podobneho pro JPA + TopLink. Ted otazka. Existuje jiz
nekde neco podobneho, co by (pro prechodnou dobu, nez treba prejdu na
Hibernate, nebo se JPA standard rozsiri i na tuto oblast) se dalo vyuzit? Jde o
to, abych znovu nevymyslel kolo.
Osobne jsem nad tim premyslel, nepripada mi to az tak slozite, pokud bych
vytvoril vlastni Criteria API, ktere by parsovalo bud vstupni SQL query v
podobe Stringu nebo podle Entita.class, kde bych cely OQL dokazal podle classy
vygenerovat.
Kdyz bych vyuzil jen obycejneho parsovani, kde bych pridal moznosti na <>, =,
IN, NOT IN, BETWEEN, OR, atd.
Priklad:
MyCriteriaAPI c = new MyCriteriaAPI("SELECT u FROM Uzivatele u ");
c = c.add("u.login", Restrictions.IN(String[] {"lojza", "pepik", "franta"}));
....
return entityManager.createQuery(c.createOQLString()).getResultList();
Zpusob jak nejake takoveto Criteria API napsat neni asi slozite a dokonce i ja
vim jak bych na to asi sel :) Spise mi jde o to, jestli uz neco takoveho,
jednoduchouckeho neexistuje.
Ono totiz porad pridavat do String query nejakou dalsi where podminku zpusobem
pricitani k retezci, atd. je dost nesikovne a pracne, kdyz to mam delat
pokazde, kdyz delam dotaz, ktery vraci zaznamy podle filtrace.