1

このアプリケーションには、ゲームと練習の計画を持つことができるPlayerがあるため、抽象クラスPlanと2つの派生クラスGamePlanとPracticePlanを設計しました。データベースでは、派生クラスは「class」属性を持つ単一のテーブルに保存されます。

特定のプレーヤーで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" }
}   

ただし、クラスは予約済みのキーワードであり、コンパイルされません。

4

2 に答える 2

1

これを行うと、 Person のすべての計画をロードしてから、不要な計画を除外できると思います。

def gamePlansForPlayer = Player.get( id ).plans.findAll { plan ->
  plan.instanceOf( GamePlan )
}

ただし、テストしていません:-(

于 2012-06-29T14:53:54.620 に答える