在锡耶纳可以通过计算字段排序



我试图在Play中计算的文件上按顺序返回查询。这是我正在使用的查询。

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

其中点定义为

public Integer points;

并且由于这个getter 而被检索

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;
}

当我进行时,getter被正确调用

int votes=objectWithPoints.points;

我有一种感觉,我假装有点太过分了,但我希望它能起作用(或一些类似的代码)。目前它只是跳过订单条件。在任何其他字段上进行排序都是正确的。

当你说你等得太久时,我认为你是对的:)
Siena查询all().order("points").fetch()执行对DB的请求。因此,它将对存储在DB中的值进行排序,而不是对程序进行排序。

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

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

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

要么在计算完值之后,在程序中自己对值进行排序。

相关内容

  • 没有找到相关文章

最新更新