繁体   English   中英

从QueryDSL谓词对象中获取参数

[英]Get parameters out from QueryDSL Predicate Object

我使用带有弹簧REST端点的QueryDSL谓词对象来检索和查询参数值。

@GetMapping("/{subjectId}/students")
@RolesAllowed( {Roles.PLATFORM_ADMIN, Roles.USER})
public List<StudentResponse> getAllStudents(@PathVariable final String subjectId,                                
                                      @QuerydslPredicate(root = Student.class) final Predicate predicate) {     

        final Predicate searchPredicate = studentPredicate()
                .predicate(predicate)
                .subjectId(subjectId)
                .build();
        return studentService.findBySubjectId(subjectId, searchPredicate);

}

学生类包含studentIdstudentName属性;

现在,如果有人调用https:// hostname / {subjectId} / students?studentId = 1234&studentName = test

然后上面的代码生成带有参数值的谓词对象。 但是我需要从谓词对象中获取2个以上的param值,以进行除数据库查询之外的进一步处理。 我没有从谓词对象中获取任何支持方法来检索值。 那我该怎么办呢?

没有直接的方法可以做到这一点。
但是,您可以尝试此。

predicate.toString(); --->这将打印user.Studentid = 1234 && user.studentName = test
由此,您可以进行字符串拆分。

另一种方法是

predicate.getClass()); ---->这将为您提供类名称,例如

com.querydsl.core.types.PredicateOperation类(如果有多个查询条件)

com.querydsl.core.types.dsl.BooleanOperation类(在单个查询条件下)。

这样,您可以将谓词类型转换为相应的类型,然后执行getArgs()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM