在我們的應用程序中,我們有一個可以有遊戲和練習計劃的玩家,因此我們設計了抽象類Plan和兩個派生類GamePlan和PracticePlan。在數據庫中,派生類用'class'屬性保存到一個表中。Grails與抽象類的一對多
當我們在特定的玩家上使用getPlans()時,我們得到了所有的計劃,但我們想知道如何獲得遊戲或實踐計劃。類似於player.getPracticePlans()或Player.PracticePlans(player_id)。以下是我們的課程。
class Player {
String name
static hasMany = [ plans : Plan]
}
abstract class Plan {
}
class PracticePlan extends Plan{
}
class GamePlan extends Plan{
}
注意:我們嘗試使用類似:
def query = Player.where {
plans { class == "GamePlan" }
}
但類是保留關鍵字,它不編譯。
你計劃上課'belongsTo'玩家嗎? –
不,一個計劃可以在許多用戶之間共享。 – MBozic
個人而言,我只是做靜態hasMany = [gamePlans:GamePlan,practicePlans:PracticePlan]。這不會簡化事情嗎? – Gregg