在春天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