【问题标题】:Query by example in Hibernate 5.2在 Hibernate 5.2 中通过示例查询
【发布时间】:2017-08-02 08:08:42
【问题描述】:

我在 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 中作为 criteriaQuery 的 JPA 规范(在新版本中弃用该方法的原因之一)所做的事情。详情请见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 中使用示例查询?

【问题讨论】:

标签: java hibernate jpa criteria criteria-api


【解决方案1】:

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

【讨论】:

  • 嘿,弗拉德,还有一件事,如果 session.createCriteria() 已被弃用,为什么你在新文档中到处使用它,我的意思是超过 40 次??
  • 什么意思?给我看一些链接。
  • 嗯.. 看到这个链接,docs.jboss.org/hibernate/orm/5.2/userguide/html_single/… 这里,在第一段,它说Criteria API should be considered as deprecated,在第 29 章它说 这个附录涵盖了遗留的 Hibernate org.hibernate.Criteria API,应该被视为已弃用。,并且仍然详细说明了已弃用的处理方式。
  • Criteria API 是指 JPA 之一,它未被弃用。旧的 Hibernate-specific Criteria 已被弃用。请仔细阅读。
  • 嗨弗拉德,我被这个问题困住了stackoverflow.com/questions/45539556/…,我不知道如何处理它,你的文档也没有提到处理这些子查询的方法。请指导我。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-15
  • 2011-12-20
  • 2021-12-29
  • 1970-01-01
  • 2017-03-24
相关资源
最近更新 更多