如何在Hibernate 5.2

时间:2017-10-29 17:56:21

标签: java spring hibernate

来自Hibernate 5已弃用创建条件。相反,我们可以使用创建查询。但是现在如何添加限制。请有人帮我这个

public List<ExpensesSummary> displayExpense() {
    Session session = getSessionFactory().openSession();
    CriteriaBuilder builer = session.getCriteriaBuilder();
    CriteriaQuery<ExpensesSummary> criteria = builer.createQuery(ExpensesSummary.class);
    List<ExpensesSummary> expensesList = session.createQuery(criteria).getResultList();
    return expensesList;
}

3 个答案:

答案 0 :(得分:1)

Session.getCriteriaBuilder()方法继承自javax.persistence.EntityManager接口。因此,标准的制定符合JPA标准。

您可以在此资源上查看JPA参考:WHERE in Criteria Queries

答案 1 :(得分:0)

下面的示例,可以帮助您。

         final CriteriaBuilder builder = getSessionFactory().getCurrentSession().getCriteriaBuilder();
         CriteriaQuery<Customer> criteriaQuery = builder.createQuery(Customer.class);
         Root<Customer> Customer = criteriaQuery.from(Customer.class);     
         criteriaQuery.where(builder.equal(builder.upper(customer.get("customerName")),customerName.toUpperCase()));
         Query<Customer> query = getSessionFactory().getCurrentSession().createQuery(criteriaQuery);
         final List<Customer> results = query.getResultList();

答案 2 :(得分:0)

CriteriaBuilder的示例,限制了CriteriaBuilder方法。此标准的JPQL。

select i from Item i where i.name="SomeThing"

现在使用CriteriaBuilder ......

    CriteriaBuilder builder = session.getCriteriaBuilder();
    CriteriaQuery criteria = builder.createQuery();
    Root<Item> i = criteria.from(Item.class);
    criteria.select(i).where(
            builder.equal(i.get("name"), "SomeThing")
    );

    TypedQuery<Role> query = session.createQuery(criteria);

现在,您可以通过getSingleResult()或getResultList()从查询中获取结果。如果您想了解CriteriaBuilder Click Here的更多限制方法。