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;

我觉得我在锡耶纳假装太多了,但我希望它能够工作(或一些类似的代码)。目前它只是跳过订单条件。在任何其他字段上排序都可以正常工作。

4

1 回答 1

0

当您说您等待太多时,我认为您是对的:)
Siena 查询all().order("points").fetch()执行对数据库的请求。所以它会将存储在数据库中的值排序到你的程序中。

从你所说的,我看到你有一个计算值的getter getPoints。但是,如果您不将此值存储到数据库中,则 Siena 无法执行排序。

因此,要么计算值,将其设置在对象中,然后将对象保存到数据库。

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

在计算它们之后,您可以自己在程序中对值进行排序。

于 2011-05-27T16:52:50.840 回答