2011-05-27 52 views
0

我試圖得到一個查詢返回的順序在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; 
} 

吸氣劑正確調用,當我做

int votes=objectWithPoints.points; 

我有感覺我是假裝從錫耶納有點太多,但我會喜歡這個工作(或一些類似的代碼)。目前它只是跳過訂單條件。在任何其他領域訂購都能正常工作。

回答

0

我認爲你是真的,當你說你等待有點太多:)
錫耶納查詢all().order("points").fetch()執行一個請求數據庫。 因此它會將存儲在數據庫中的值排序到您的程序中。

從你說的話,我看到你有一個getters計算一個值。 但是,如果您不將該值存儲到數據庫中,則錫耶納不能執行該順序。

因此,要麼計算該值,將其設置在您的對象中並將對象保存到數據庫。

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

你可以在你的程序中計算出你自己的數值後,

相關問題