在春天mvc應用程序中,我在Caregiver
實體和Patient
實體之間存在多對多的關係。創建新的caregiver
的jsp視圖不會將指定的patient
添加到與caregiver
實例關聯的patients
集合中。收集不填充多對多
:您可以在控制器代碼的下面PRINTSCREEN,這是在調試模式下運行,並已停止在該點下方的線,其中patient
應該已經添加到patients
的caregiver
的集合看到這
同樣,下面的下一個PRINTSCREEN示出了調試程序指示patients
集合爲空對於給定caregiver
,在上面所指出的在控制器的執行的點,其中所述patient
應該被添加到caregiver
:
查詢,該caregiver
已被添加到caregiver
表底層mysql數據庫顯示,但有在連接表中沒有記錄應當與指定patient
鏈接caregiver
。爲什麼patient
沒有添加到caregiver
?
如果我在代碼的那部分寫patient.addCaregiver(caregiver)
或caregiver.addPatient(patient)
,結果是無盡重複加入caregiver
和patient
彼此,表明手動添加顯然是不必要的堆棧溢出錯誤。那麼如何確保patient
被添加?
僅供參考,我已經加入了Caregiver
實體的全部代碼和Patient
實體到文件共享網站,您可以通過點擊下面的鏈接訪問:
Click here以查看該Caregiver
實體代碼。
您可以查看Patient
實體by clicking on this link的代碼。
編輯:
繼克雷西米爾的建議,我改變了Patient.addCaregiver()方法如下:
public void addCaregiver(Caregiver c) {getCaregiversInternal().add(c);}
我還修改了Caregiver.addPatient()方法成爲:
public void addPatient(Patient p) {getPatientsInternal().add(p);}
請注意,getCaregiversInternal()和getPatientsInternal()分別返回護理人員和患者集合,如上面鏈接中文件共享網站上的代碼所示。
新護理人員仍然沒有關聯到相應患者的收集。我如何特別改變這些或其他方法來實現這一點?
我發佈了一個答案,但似乎我誤解了你的問題。您的問題是caregiver.patients集合沒有被控制器正確填充,或者是hibernate沒有將集合正確存儲到數據庫的問題?我的答案與後者有關。如果是前者,你在哪裏添加照顧者給病人? –
@ KresimirNesek問題在於,當用戶創建新的護理人員記錄時,護理人員不會被添加到指定患者的護理人員集合中。我更關心patient.caregivers。病人的主要jsp連接到這個jsp,創建一個護理人員,然後返回到病人的主jsp。 – CodeMed