我使用的是Java8和JPA2。
我想在where子句中添加一个谓词。
我有以下代码:
@Override
public List<Job> findById(String ids, Integer type) {
String[] args = ids.split(",");
Set<String> idSet = new HashSet<String>(Arrays.asList(args));
CriteriaBuilder builder = entityManager.getCriteriaBuilder();
CriteriaQuery<Job> query = builder.createQuery(Job.class);
Root<Job> post = query.from(Job.class);
CriteriaQuery<Job> criteria = query.select(post);
criteria.where(post.get("id").in(idSet));
//criteria.where(post.get("type").in(type)); <=== how do I do an equals
TypedQuery<Job> typedQuery = entityManager.createQuery(query);
List<Job> results = typedQuery.getResultList();
return results;
}
正如您所看到的,我使用criteria
对象并使用where
子句过滤ID集中的“ids”。
我想在where子句中添加一个附加过滤器,但我不知道如何。我想添加一个子句,其中“type”列等于type
Integer对象中的值。
即
where id in [...] and type = 1
任何建议都表示赞赏。