2011-05-27 1 views
0

Я пытаюсь получить запрос, возвращенный заказанный на поданной, которая рассчитывается в Play. Это вопрос, который я использую.Возможно в Сиене заказать по расчетному полю?

return all().order("points").fetch(); 

, где точки определяется как

public Integer points; 

и получить благодаря этому добытчика

public int getPoints(){ 
    List<EventVote> votesP = votes.filter("isPositive", true).fetch(); 
    List<EventVote> votesN = votes.filter("isPositive", false).fetch(); 
    this.points= votesP.size()-votesN.size(); 
    return this.points; 
} 

Поглотитель правильно называется, когда я

int votes=objectWithPoints.points; 

У меня есть ощущение, что я претендую ng немного слишком много из siena, но я хотел бы, чтобы это работало (или какой-то аналогичный код). В настоящее время он просто пропускает состояние заказа. Заказ на любом другом поле работает правильно.

ответ

0

Я думаю, что вы прав, когда говорите, что ожидаете слишком много :)
Запрос Siena all().order("points").fetch() выполняет запрос к БД. Поэтому он будет заказывать значения, хранящиеся в БД, не в вашу программу.

Из того, что вы говорите, я вижу, что у вас есть getter getPoints, который вычисляет значение. Однако, если вы не храните это значение в базе данных, заказ не может быть выполнен Siena.

Так что либо вы вычисляете значение, устанавливаете его в свой объект и сохраняете объект в БД.

objectWithPoints.points = getPoints(); 
objectWithPoints.save(); 

Вы либо заказываете значения самостоятельно в своей программе после их вычисления.

 Смежные вопросы

  • Нет связанных вопросов^_^