QueryDSL - 如何在

时间:2015-12-21 15:38:54

标签: querydsl

我从字符串列创建了一个动态查询,如下所示:

String myColumn = "name";
String myName = "John";

QStudent student = QStudent.student;
query.from(student);

StringPath column = Expressions.stringPath(student, myColumn);

query.where(column.eq(myName));

这很好用!当字段不是字符串时,我还需要使用相同的代码,如下所示:

String myColumn = "some_id";
Long myId = "10";

QStudent student = QStudent.student;
query.from(student);

StringPath column = Expressions.stringPath(student, myColumn);

query.where(column.eq(myId));

我在 column.eq(myId)上收到错误,因为myId不是字符串。

我的问题是如何在不将myId的类型更改为String的情况下进行此比较?

错误消息:

SimpleExpression类型中的方法eq(String)不适用于参数

1 个答案:

答案 0 :(得分:0)

您案例的一般模式是

query.where(Expressions.path(myId.getClass(), student, myColumn).eq(myId));

或者数字

query.where(Expressions.numberPath(Long.class, student, myColumn).eq(myId));

QStudent来自哪里?