来自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;
}
答案 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的更多限制方法。