9. listopadu 2010

Hibernate: rozdílné výsledky HQL a Criteria API?

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 ...