我有兩個域類Person和Workshop。研討會擁有Person類型的所有者,以及Person類型的許多參與者。一個人可以成爲許多研討會的參與者。當在研討會上註冊人員時,我想從Workshop一邊這樣做,例如workshop.AddToParticipants(),這是我如何設置我的域類。不需要的GORM表創建
class Person {
String name
static hasMany = [enrolledWorkshops: Workshop]
static belongsTo = [Workshop]
}
class Workshop {
Date startDate
Date endDate
String name
Person owner
static hasMany = [participants: Person]
}
GORM正確地創建具有WORKSHOP_ID和PERSON_ID列的WORKSHOP_PARTICIPANTS表,並增加了一個OWNER_ID列到WORKSHOP表。這很好。
但是,它也會創建帶有PERSON_ID和OWNER_ID列的WORKSHOP_OWNER表!這對我來說毫無意義,無論我如何嘗試改變GORM關係,我都無法在不創建這個令人討厭的額外表格的情況下如何工作。我如何防止創建WORKSHOP_OWNER表?任何幫助是極大的讚賞! (如果有任何幫助,我正在使用Grails 2.3.7)
不應該屬於你在工作坊:'static belongsTo = [owner:Person]'? –
@NathanHughes我認爲不是因爲那樣我就不得不添加像person.AddToEnrolledWorkshops()這樣的研討會。我繼續設置它,雖然我運行應用程序時實際上收到以下錯誤:加載插件管理器時出錯:沒有所有者在域類[class app.Person]和[class app.Workshop]一對多的關係。例如:static belongsTo = app.Workshop – zero01alpha
它們看起來都有許多對方,並且還有一個belongsTo,一方是Person,它是無參考關係。我想如果你刪除靜態hasMany = [enrolledWorkshops:Workshop],那麼你會得到所需的行爲。由於沒有引用關係,即靜態belongsTo = [工作坊]允許所需的行爲「一個人可以是許多車間的參與者」 – Vahid