Java JPA2谓词

时间:2016-11-04 09:18:32

标签: java jpa

我使用的是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

任何建议都表示赞赏。

0 个答案:

没有答案