2015-12-21 24 views
0

我从一个字符串列这样creted动态查询使用StringPath: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类型更改为String的情况下进行此比较?

错误消息:

在类型SimpleExpression方法当量(字符串)是不适用的参数

回答

0

为您的情况下的一般的图案将是

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

替代地数字

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

QStudent来自哪里?