将JQL转换为CriteriaBuilder

时间:2010-09-07 10:59:08

标签: java jpa

好的..我被卡住了。

有人可以帮我转换这个JQL

  

选择FROM资产a WHERE?1 IN(SELECT c FROM a.categories c)

类别是Enum的集合。我很难转换WHERE部分。我不明白为什么方法CriteriaBuilder.IN只接收一个值。

任何人都可以帮助我?

1 个答案:

答案 0 :(得分:4)

尝试类似:

        CriteriaBuilder qb = em.getCriteriaBuilder();
        CriteriaQuery<Asset> cq = qb.createQuery(Asset.class);
        Root<Asset> asset = cq.from(Asset.class);
        cq.where(qb.parameter(Category.class, "category").in(asset.<Collection<?>>get("categories"))));
        Query query = em.createQuery(cq);