[英]Select all records if parameter is null else return specfic item in JPA Criteria query
I am using JPA and I want to write search query for fetching all the records if search field is empty and if search parameter is not null then apply criteria query. 我正在使用JPA,并且如果搜索字段为空并且如果搜索参数不为null,那么我想编写搜索查询以获取所有记录,然后应用条件查询。
CriteriaBuilder cb = entityManager.getCriteriaBuilder();
CriteriaQuery<String> cq = cb.createQuery(String.class);
Root<String> query = cq.from(String.class);
cq.where(cb.equal(query.get("id"), '1234567'));
TypedQuery<String> q = entityManager.createQuery(cq);
List<String> results = q.getResultList();
return results;
Thanks 谢谢
I had a solution finally using Criteria API. 我终于有了使用Criteria API的解决方案。 Have a look at the code below. 看看下面的代码。
public List < Object > retrieveAll(Object obj) {
CriteriaBuilder cb = entityManager.getCriteriaBuilder();
CriteriaQuery < Object > cq = cb.createQuery(Object.class);
Root < Object > objQuery = cq.from(Object.class);
List < Predicate > predicates = new ArrayList < Predicate > ();
// You can add as many as Predicate you want.
if (null != obj.getName() && !obj.getName().isEmpty()) {
predicates.add(cb.equal(objQuery.get("Name"), obj.getName()));
}
List < Object > results = new ArrayList < Object > ();
if (!predicates.isEmpty()) {
cq.select(objQuery).where(predicates.toArray(new Predicate[] {}));
cq.orderBy(cb.asc(objQuery.get("Name")));
results = entityManager.createQuery(cq).getResultList();
} else {
results = entityManager.createQuery("from Emplyee ORDER BY Name asc").getResultList();
}
return results;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.