在我们的应用程序中,我们有一个 Player 可以有游戏和练习计划,因此我们设计了抽象类 Plan 和两个派生类 GamePlan 和 PracticePlan。在数据库中,派生类被保存到具有“类”属性的单个表中。
当我们对特定玩家使用 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" }
}
但是该类是保留关键字,并且无法编译。