2012-07-09 52 views
2

我有两个域类,课程可以属于一个或多个培训,并且可以有一个或多个课程。如何在grails中保存多对多的域对象

Class Track{ 
    string name 
    static hasMany= [courses: Course] 

} 

Class Course{ 
    String name 
    static belongsTo = [tracks: Track] 

} 
在使用过程中

创建一个页面,我有场

<g:select id="tracks" name="tracks.id" from="${com.springpeople.tms.Track.list()}" optionKey="id" value="${courseInstance?.tracks?.id}" class="many-to-one" noSelection="['null': '']"/> 

但轨道是没有得到保存过程中,我是否需要明确地传递轨道对象。有没有办法做到这一点。

回答

2

首先您需要保存跟踪类对象,然后您可以保存课程类对象。

在您的情况下,当您尝试保存课程对象时,您将无法获得跟踪ID,即 为什么它会通过例外。

通过保存方法保存轨道类对象后。

之后使用object.addToCourse(courseObject).save();为了节省。