【发布时间】:2014-02-03 02:01:41
【问题描述】:
我的数据域:
class Course{
List teacherCourse
static hasMany = [courseByMultipleTeacher:TeacherCourse]
}
class Teacher{
String name
List teacherForCourses
static hasMany = [teacherForCourses:TeacherCourse]
}
class TeacherCourse{
Course course
Teacher teacher
static mapping={
id composite: ['teacher','course']
}
}
在我的控制器中:
save(){
Teacher teacherInst = new Teacher()
teacherInst.name = "T1"
teacherInst.save(flush:true)
Course c1 = Course.findById(3)
Course c2 = Course.findById(4)
def teacherCourseA = new TeacherCourse(teacher:teacherInst, course:c1)
def teacherCourseB = new TeacherCourse(teacher:teacherInst, course:c2)
teacherInst.addToTeacherCourse(teacherCourseA)
teacherInst.addToTeacherCourse(teacherCourseB)
teacherInst.save(flush:true)
//Output is: (unsaved) . Why?
println(Teacher.findById(teacherInst.id).teacherForCourses.get(0));
}
输出 net.school.teacher.TeacherCourse :(未保存)
教师和教师课程被保存在数据库 (PostgreSQL) 中。每当我尝试从列表中检索值时,都会收到(未保存的)消息。我不确定为什么会这样。任何帮助,将不胜感激。我查了这个link,但无法解决问题。
【问题讨论】:
-
我认为
teacherInst是在teacherInst.addToTeacherCourse(teacherCourseA) 之后修改的,修改后您是否尝试再次保存teacherInst。 -
我尝试保存teacherInst..仍然得到同样的错误..我也会更新代码..
-
我不明白您为什么要创建 TeacherCourse 域。您可以直接将课程 c1 添加到教师实例。
-
请将Teacher类的addToTeacherCourse方法添加到代码示例中。
-
@turbo 老师和课程之间存在多对多的关系...
标签: grails grails-orm grails-domain-class grails-controller