Search code examples
javahibernatejpacriteriacriteria-api

Query by example in Hibernate 5.2


I did query by example in hibernate 4.X version, but when I tried to do so in 5.2, it's session.createCriteria() is deprecated.

        Session session = getSession();
        Admin admin = new Admin();
        admin.setEmail(email);
        admin.setPasswd(password);
        Example adminExample = Example.create(admin);
        Criteria cq = session.createCriteria(Admin.class).add(adminExample);

Here's how I do in 5.2 as JPA specifications (one of the reason to deprecate the method in new release) for criteriaQuery. see here for more details

        Session session = getSession();

        CriteriaBuilder builder = session.getCriteriaBuilder();
        CriteriaQuery<Admin> criteria = builder.createQuery(Admin.class);
        Root<Admin> adminRoot = criteria.from(Admin.class);
        criteria.select(adminRoot);
        Predicate adminPre = builder.and(builder.equal(adminRoot.get("email"), email),
                builder.equal(adminRoot.get("password"), password));
        criteria.where(adminPre);
        List<Admin> adminList = session.createQuery(criteria).getResultList();

So my question is, how can I use query by example in 5.2 ?


Solution

  • JPA Criteria does not support query by example so you need to rewrite those queries to explicit predicates.