我有两个域类:
日时间表
class DaySchedule {
Date Todaysdate
String startTime;
String endTime;
String task
int priority
boolean completed
static belongsTo = [ schedule : Schedule ]
}
排程:
class Schedule {
Date date;
static belongsTo = [ user : User ]
static hasMany = [ daySchedules : DaySchedule ]
static constraints = {
date(blank:false)
}
String toString() {
"Belongs to schedule"
}
}
现在,当我使用
DaySchedule
查询findAllByTaskIsNotNull()
类时,我希望它返回task
上的所有DaySchedule
,但是我将"Belongs to schedule"
作为查询结果。像这样def allTasks = DaySchedule.findAllByTaskIsNotNull()
//returns "Belongs to schedule"
如果我更进一步,查询
allTasks
,我将按预期获得所有task
。像这样 :def expected = allTasks.task
println expected //prints all tasks!
我无法理解
findAllByTaskIsNotNull()
的行为。所以我的实际问题是findAllByTaskIsNotNull()
应该返回所有task
,对吧?为什么找到合适的Schedule
?这是怎么回事?我对这个概念有误吗?提前致谢。
最佳答案
我认为您确实错误地理解了这个概念。
动态查找器检索被调用的类的对象或对象列表。
因此,在您的示例中,DaySchedule.findAllByTaskIsNotNull()将检索“DaySchedule”类型的对象。
“任务”只是DaySchedule类的String属性,并且您在Schedule类中定义了一个toString方法,该方法返回“Belongs to schedule” ...因此当您在结果上调用println时将打印该内容,因为该类实际上是属于DaySchedule,并且在DaySchedule类上没有toString方法。
因此,如果要改为显示task属性,只需将其添加到DaySchedule类中:
String toString() {
return this.task
}