0

2 つのドメイン クラスがあります。

class Entity {
    static hasMany = [
            titles: Title
    ]
}

class Title {
    Boolean isActive

    static belongsTo = [entity:Entity]  

    static mapping = {
        isActive type: 'yes_no'
    }
}

Entity.get(0) を呼び出しているときに、データベースから id=0 のエンティティを取得したいと思いますが、アクティブなタイトル (isActive = true) のみを使用します。Grailsでそれは可能ですか?Title ドメイン クラスの静的マッピングに where 句を追加しようとしました。

static mapping = {
    isActive type: 'yes_no'
    where 'isActive = Y'
}

また

static mapping = {
    isActive type: 'yes_no'
    where 'isActive = true'
}

しかし、うまくいきません。バージョン 2.2.1 の Grails を使用しています

私たちを手伝ってくれますか?前もって感謝します。

4

1 に答える 1

1

この場合、それをcriteria行うために使用できます:

Entity.createCriteria().get {
  eq('id', 0)
  projections {
    titles {
      eq('isActive', true)
    }
  }

}

そのドメインクラスへのすべてのデータベース呼び出しに適用されるデフォルトの場所を設定することは不可能だと思います。

ロジックをサービスにラップすることもできます。

class EntityService {
  def get(Long id) {
    return Entity.createCriteria().get {
      eq('id', id)
      projections {
        titles {
          eq('isActive', true)
        }
      }
    }
  }
}
于 2013-07-03T13:48:48.843 に答える