【问题标题】:How to maintain order in grails many-many relationship如何在grails多对多关系中维护秩序
【发布时间】:2014-02-02 12:42:32
【问题描述】:

我的项目要求我以多对多的关系维护插入和检索顺序。默认情况下,groovy 将元素保存为多对多关系中的 Set。我想在一个列表中做到这一点。我不确定如何更新关系以使用 List 而不是 Set。任何帮助将不胜感激。

class Course{
        static belongsTo = Teacher
        static hasMany = [teacher:Teacher]

        static mapping = {
            teacher joinTable : [name: TeacherCourse]
        }
    }

    class Teacher{

        static hasMany = [course:Course]
        static mapping = {
            course joinTable : [name: TeacherCourse]
        }
    }

save() 调用 Teacher 或 Course 也会在 TeacherCourse 表中插入一个新行。它可以正常工作。在数据库中,这些表是:- 老师(PK:身份证) 课程(PK:身份证) TeacherCourse(PK: [Teacher_id,Course_id])

有没有办法在多对多关系中保持插入和检索的顺序?

谢谢你..

编辑 在控制器中保存()

def courseInstance = new Course()
List <Teacher> teacherList= []
teacherList.add(Teacher.findById(65))
teacherList.add(Teacher.findById(36))
courseInstance.courseUnits = teacherList
courseInstance.save(flush:true)

【问题讨论】:

    标签: grails groovy grails-2.0 grails-domain-class


    【解决方案1】:

    试试这个:

    class Course {
        List teachers
    
        static belongsTo = Teacher
        static hasMany = [teachers:Teacher]
    
        static mapping = {
            teachers joinTable : [name: TeacherCourse]
        }
    }
    
    class Teacher {
        List courses
    
        static hasMany = [courses:Course]
        static mapping = {
            courses joinTable : [name: TeacherCourse]
        }
    }
    

    Reference

    【讨论】:

    • 您已将关联属性重命名为复数,但映射块仍使用单数名称。
    • 感谢您的回复。我仍然无法保存插入顺序。这是我在控制器 save() 中所做的事情
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-06-27
    • 1970-01-01
    • 2011-06-18
    • 2015-10-28
    • 2012-08-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多