Již je to nějaký čas, co jsem řešil problémy s Hibernate dotazy a v rámci ladění jsem už zkoušel všechno možné i nemožné a podařilo se mi, že jsem měl "stejné" dva dotazy, ale každý vracel jiné výsledky.
První dotaz je napsán pomocí Criteria API a v dané úloze správně nevrátil žádnou hodnotu. Druhý dotaz je napsán pomocí HQL a špatně najde jeden záznam (jednoho poplatníka).
Criteria criteria = createCriteria();
criteria.add(Restrictions.gt(DOaa_odpad_poplatnik.PLATNOST_OD, param.getDatum_posl_aktualizace_aa()));
List list1 = findByCriteria(criteria);
String hql = "select poplatnik from " + DOaa_odpad_poplatnik.class.getSimpleName() + " poplatnik "
+" where platnost_od > :datum";
Query query2 = createQuery(hql);
query2.setDate("datum", param.getDatum_posl_aktualizace_aa());
List list2 = query2.list();
Musím se přiznat, že do teď netuším, jak je to možné. Pokud někdo víte, budu rád, když se přiučím ...
4 komentáře:
jak vypada ta polozka, co ji to spatne nejde? Je to vzdy ta sama? Kolik je v tabulce radku?
Už jsem si zvykl, že HQL narozdíl od Criteria API občas nezvládne převést dotaz do SQL a správně ho uzávorkovat...
Mrkl bych se, co vám z toho vyrobí za SQL...
Já nejsem schopen dodat nějaké přesné údaje, protože je to už nějaký čas - já jsem si to jen poznamenal a až teď jsem to dal na blog.
Řádků tam bylo řádově tisíce, nalezená položka byla pořád ta samá.
Stacilo by skomparovat vygenerovane SQL pro HQL i Criteria a uvidis vysledek a duvod hned.
Okomentovat