JPA CriteriaBuilder - How to use “IN” comparison operator

前端 未结 2 1748
孤城傲影
孤城傲影 2020-11-27 04:17

Can you please help me how to convert the following codes to using \"in\" operator of criteria builder? I need to filter by using list/array of usernames using \"in\".

2条回答
  •  自闭症患者
    2020-11-27 05:09

    Not a perfect answer though may be code snippets might help.

    public  List findListWhereInCondition(Class clazz,
                String conditionColumnName, Serializable... conditionColumnValues) {
            QueryBuilder queryBuilder = new QueryBuilder(clazz);
            addWhereInClause(queryBuilder, conditionColumnName,
                    conditionColumnValues);
            queryBuilder.select();
            return queryBuilder.getResultList();
    
        }
    
    
    private  void addWhereInClause(QueryBuilder queryBuilder,
                String conditionColumnName, Serializable... conditionColumnValues) {
    
            Path path = queryBuilder.root.get(conditionColumnName);
            In in = queryBuilder.criteriaBuilder.in(path);
            for (Serializable conditionColumnValue : conditionColumnValues) {
                in.value(conditionColumnValue);
            }
            queryBuilder.criteriaQuery.where(in);
    
        }
    
        

    提交回复
    热议问题