问题产生
最开始的时候,是在做非强检器具的编辑功能。添加了一个非强检器具,然后点击编辑,获取对应的对象,然后绑定在表单上,附加参量没有出现。

图中红框的位置应该有一个附加参量的编辑部分,但现在没有出现。然后从次开始问题的查找。
问题定位
1.检查前台问题
首先是先检查一下是否是前台出错了,因为这是个动态的表单,所以存在ng-show,检查无误。附加参量的位置使用了ng-repeat,也就是说,只要获取到了数据,附加参量就会显示。
2.检查jsonview
调用的是get方法,所以可能是相应的实体上没有添加jsonview,所以在前台没有获取到对应的数据。将所有的关联实体都添加上jsonview后,依然不好使。也不是这个问题。
3.打印获取的对象

获取的附加参量是一个空数组。到这里可以知道,get方法没有出错。那么既然获取没有问题,那么就只能是保存的时候出现了问题。
4.查找save的错误
这个保存的问题还是花了挺长时间才找到的。最后还是因为巧合才发现问题的原因。
最开始,我的更新方法update在保存的时候使用的是jpa自带的保存方法。
|
|
这里直接使用repository的save方法,然后我先点击了一下编辑,然后保存。在点击编辑,发现原来的参量也不见了。

然后我将update的保存方法也换成M层的保存方法。就和最上面的问题一样了:参量能存上,但是附加参量存不上。
所以我就去看了一下M层的save是怎么写的:
|
|
发现在保存之前先为每个参量添加了非强检器具这个属性。看到这里我就知道问题所在了:保存的时候没有设置附加参量的参量属性。
原因猜测
首先我们知道非强检器具和参量是一对多的关系。参量和附加参量是一对多的关系。我们在建实体的时候,避免生成中间表,使用了mappedBy这个属性,交由一的一方来维护表。这样就会在参量的表中生成一个非强检器具的外键,所以如果在保存的时候不为参量添加非强检器具,这个外键就是空的。所以在查询的时候就不能关联查询出参量。参量和附加参量也是这个道理。
问题解决
解决办法很简单,在保存之前,为附加参量设置参量这个属性。
|
|
总结
这次的问题解决时间还是比较长的,虽然最终问题是解决了,但是还是暴露出比较多的问题。一个就是对已知的知识掌握的不够灵活,另一个就是debug能力比较弱。