限制从数据库检索的行以获取域类之间的关系

时间:2013-07-03 13:34:51

标签: grails gorm relationship grails-domain-class

我有两个域类:

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

你能帮助我吗?提前谢谢。

1 个答案:

答案 0 :(得分:1)

在这种情况下,您可以使用criteria来执行此操作:

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

}

我认为不可能在所有对该Domain Class的数据库调用中应用默认值。

您还可以将逻辑包装在服务中:

class EntityService {
  def get(Long id) {
    return Entity.createCriteria().get {
      eq('id', id)
      projections {
        titles {
          eq('isActive', true)
        }
      }
    }
  }
}