在Hibernate 5.2中通过示例查询

时间:2017-08-02 08:08:42

标签: java hibernate jpa criteria criteria-api

我在hibernate 4.X版本中通过示例进行了查询,但是当我尝试在5.2中执行此操作时,不推荐使用session.createCriteria()

        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);

以下是我在5.2中作为JPA规范(在新版本中弃用该方法的原因之一)的criteriaQuery。有关详细信息,请参阅here

        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();

所以我的问题是,如何在5.2中使用查询示例?

1 个答案:

答案 0 :(得分:2)

JPA Criteria不支持按示例查询,因此您需要将这些查询重写为显式谓词。