我在更新具有多对多关系的域时遇到问题。例如,考虑这两个简单的域。
class Student {
String name
static hasMany = [courses: Course]
}
class Course {
String name
static hasMany = [students: Student]
static belongsTo = [Student]
}
为了更新学生的姓名和他/她的课程名称,我使用这样的数据绑定:
def params = [
'courses[0].id': c2.id,
'courses[0].name': 'c11',
'courses[1].id': c1.id,
'courses[1].name': 'c22'
]
s1.properties = params
s1.save(flush: true)
但是,这会导致错误:
org.springframework.beans.InvalidPropertyException: Invalid property 'courses[1]' of bean class [tb.Student]:
Invalid list index in property path 'courses[1]'; nested exception is java.lang.IndexOutOfBoundsException:
Index: 1, Size: 1
经过一番搜索,我发现所有答案都建议使用 List 而不是 Set。不过,我还是更喜欢使用 Set。
环境
- 圣杯:2.2.3
- 爪哇:1.6.0_45
- 操作系统:Ubuntu 13.04