java - 带有 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 而不是这个?
解决方案
这将起作用,仅在 'í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));
推荐阅读
- ios - UITapGestureRecognizer 添加到 UIView 类型的屏幕上
- php - PHP Laravel - 使用 LaravelGettext 进行多语言环境路由?
- javascript - 在 Twilio API 上下载 WhatsApp 位置文件
- web-services - 实现自定义 Web 服务后不再使用 platformwebservice
- php - 使用过滤器将 html 添加到 WooCommerce 商店通知
- javascript - 从表单收集数据,在对象中堆叠并使用 Vue 使用 AJAX 发送
- opencv - 如何在 ubuntu 18.04 中正确配置 g++ 与 opecv 的链接?
- python - 在 pandas Dataframe 函数中使用 shift 函数
- html - IE11如何在不提示程序选择器的情况下下载文件
- bash - 将 Bash 命令与 AWS CLI 复制命令相结合