首页 > 解决方案 > 带有 ArrayList 的条件 API IN

问题描述

Criteria 可以在“IN”表达式中使用 List 吗?

例如:

List<Long> ids = new ArrayList<>();
        ids.add(1L);
        ids.add(2L);
        ids.add(3L);

我想找到所有 1、2、3 的 id

CriteriaBuilder criteriaBuilder = em.getCriteriaBuilder();
    CriteriaQuery<User> userQuery = criteriaBuilder.createQuery(User.class);
    Root<User> userRoot = userQuery.from(User.class);
    userQuery.select(userRoot);
    userQuery.where(userRoot.get("id").in("1","2","3"));

如何使用 List 而不是这个?

标签: javaspringspring-mvccriteria

解决方案


这将起作用,仅在 'ín' 方法中使用 id 作为参数


List<Long> ids = new ArrayList<>();
    ids.add(1L);
    ids.add(2L);
    ids.add(3L);
CriteriaBuilder criteriaBuilder = em.getCriteriaBuilder();
    CriteriaQuery<User> userQuery = criteriaBuilder.createQuery(User.class);
    Root<User> userRoot = userQuery.from(User.class);
    userQuery.select(userRoot);
    userQuery.where(userRoot.get("id").in(ids));

推荐阅读