0

我有两个域类:

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 回答