2013-04-25 65 views
0

我最近在Java/JavaEE背景下啓動了一個Grails項目。Grails單向多對多

當我編寫域模型時,有一個要求:單向多對多。我知道它應該如何在Jpa/Hibernate中。我在grails中快速搜索了一下,似乎它在Grails中不被支持,並且有人建議使用映射類(沒有示例應該怎麼做)。

任何人都可以給我一個這樣的例子,或者我應該怎麼做這個要求?

例如:

class Teacher { 
static hasMany: [students: Student] 
} 

class Student { 
    static belongsTo: Teacher 
    static hasMany: [teachers: Teacher] 
} 

上面的代碼是用雙向多到很多的Grails文檔完成。什麼是單向多對多的代碼?

此外,只有學生可以有老師參考,在老師班,它不能得到學生名單。

謝謝。

+0

如果你把hashMany上只有一個會發生什麼邊?並使用連接表?這樣你就可以在學生中擁有一批教師,並且教師可以與許多學生相關聯。 – 2013-04-25 09:20:35

+0

也許我錯過了一些東西。你不是在描述一對多嗎?你能發佈所需的表格結構嗎? – 2013-04-25 13:01:01

+0

對於sudhir,你的意思是代碼與Anantha的代碼相似嗎?在老師方面沒有hasMany,並且在聯結表方面有belongsTo? – ttt 2013-04-25 23:13:56

回答

1

我已經使用了三個班,如老師,學生和中級班stuteach.From學生,我們可以訪問教師參考。在老師方面,我們無法訪問學生。

class Teacher { 
String name 

} 

class Student { 
    String name 
    static hasMany  = [teachers:StuTeach] 

} 

class StuTeach { 

    static constraints = { 
    } 
    static belongsTo = [teacher:Teacher,student:Student] 
} 

在引導,

 def t1=new Teacher(name:"t1") 
     t1.save(flush:true) 
     def t2=new Teacher(name:"t2") 
     t2.save(flush:true) 

     def stu=new Student(name:"s1") 
     stu.save(flush:true) 

     def stuteach1=new StuTeach() 
     stuteach1.student=stu 
     stuteach1.teacher=t1 
     stuteach1.save(flush:true) 

     def stuteach2=new StuTeach() 
     stuteach2.student=stu 
     stuteach2.teacher=t2 
     stuteach2.save(flush:true) 

     stu.addToTeachers(stuteach1) 
     stu.addToTeachers(stuteach2) 

     stu.save(flush:true) 
     println stu.teachers.teacher