我有两个域类:
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
你能帮助我吗?提前谢谢。答案 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)
}
}
}
}
}