【发布时间】:2013-06-14 17:07:39
【问题描述】:
如何在 grails 域类中重写 getter 和 setter 以使字段成为一对多关系?我知道如何覆盖作为单个对象的字段的 getter 和 setter,但我对 Collections 有疑问。这是我的情况:
我有实体域类,它有很多标题。现在我想覆盖标题的 getter 以仅获取标志 isActive 等于 true 的标题。我已经尝试过类似的方法,但它不起作用:
class Entity {
static hasMany = [
titles: Title
]
public Set<Title> getTitles() {
if(titles == null)
return null
return titles.findAll { r -> r.isActive == true }
}
public void setTitles(Set<Title> s) {
titles = s
}
}
class Title {
Boolean isActive
static belongsTo = [entity:Entity]
static mapping = {
isActive column: 'is_active'
isActive type: 'yes_no'
}
}
感谢您的帮助。
【问题讨论】:
-
你得到什么错误?
-
对这个要求背后的推理感兴趣,为什么不使用单独的方法呢?现在,如果您需要添加检索所有标题的功能,那么您将不得不编写默认支持的单独方法。
-
请注意:grails.1312388.n4.nabble.com/…。简而言之,确保你的 setter 和 getter 不会改变值,否则 Hibernate 会被混淆。
标签: grails grails-orm