2015-12-21 3 views
0

я creted динамический запрос из столбца строки, как это:QueryDSL - Как использовать StringPath в котором

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, как это:

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?

ГЗС ошибка:

метод эк (String) в типе SimpleExpression не применяется для аргументов

ответ

0

Общий шаблон для вашего случая будет

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

альтернативно для номеров

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

Куда направляет QStudent?