【发布时间】:2014-04-01 16:41:47
【问题描述】:
在 spring mvc 应用程序中,Caregiver 实体和 Patient 实体之间存在多对多关系。创建新caregiver 的jsp 视图不会将指定的patient 添加到与caregiver 实例关联的patients 集合中。您可以在控制器代码的以下打印屏幕中看到这一点,该代码正在调试模式下运行,并已停止在应将patient 添加到caregiver 的patients 集合中的点下方的行:
类似地,下面的下一个打印屏幕显示了调试器,表明给定 caregiver 的 patients 集合是空的,在上面指出的控制器执行中,patient 应该已添加到 @ 987654339@:
底层 mysql 数据库中的查询显示caregiver 已添加到caregiver 表中,但连接表中没有记录应将caregiver 与指定的patient 链接。为什么patient 没有添加到caregiver?
如果我在那部分代码中写patient.addCaregiver(caregiver)或caregiver.addPatient(patient),结果是堆栈溢出错误,caregiver和patient无休止地重复添加,表明手动添加显然是不必要的.那么如何确保添加patient 呢?
作为参考,我已将Caregiver实体和Patient实体的完整代码添加到文件共享站点,您可以通过单击以下链接访问该站点:
Click here 查看Caregiver 实体的代码。
您可以查看Patient 实体by clicking on this link 的代码。
编辑:
按照 Kresimir 的建议,我将 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 问题是,当用户创建新的护理人员记录时,护理人员没有被添加到指定患者的护理人员集合中。我更关心患者护理人员。患者的主 jsp 链接到该 jsp,该 jsp 创建一个护理人员,然后返回到患者的主 jsp。
标签: java spring hibernate spring-mvc