QueryDsl的Predicate可以用类似静态的数据库字段名字符串操作吗

目前使用

List<Predicate> predicates = new ArrayList<>();

...

predicates.add(XXX)
predicates.add(XXX)
predicates.add(XXX)

...

List<X> qs= jpaQueryFactory
                .select(qX)
                .from(qX)
                .where(
                        predicates.toArray(new Predicate[0])
                )
                .fetch();

来查询某一个数据
但是现在要做动态的查询根据传入的字段的字符串来决定查询配置
比如这一个结构数据传入name字段
那就是要用qX.col1来查询
另一个结构传入name字段
那就是要用qX.col2来查询

col1 col2我是能获取的,是动态的,就是怎么样根据这个String colField="colX";字符串来生成可以加入到predicates数组的Expression

就是用字符串,来决定要查询的字段
不知道反射行不行。。。。

解决!

        QXxx qX=QXxx.qXxx;
        StringPath path = Expressions.stringPath(qX,"123");
        predicates.add(path.like("%XXX%"));

123就是要查询的字段名

附上找到的Stack Overflow的链接

1 个赞

还有这种操作,学习了。