先上图
图1:实体类1
图2:实体类2
图3:对应实体类1的dao层
图4:对应实体类2的dao层
测试图3的dao层,正常运行,没什么问题,方法名是按照表字段进行驼峰命名法,这也是springdata的命名规则
测试图4的dao层,bug:org.springframework.data.mapping.context.invalidpersistentpropertypath:no property 'DType' found on class xxx.xxx.xxx! did you mean: dType,Dtype?
不清楚为什么这样,图4中方法名idea给springdata的提示,谁都会觉得这点肯定不错吧,但是偏偏就是这一点错了,红色三角符号标的大写字母D变成小写就正常运行了,(也就是说要写成findBydType()即可),可这样就不是驼峰命名,
而且不符合springdata方法的命名规则,说实话不知道什么原因,命名图3按照idea的提示和命名法是正常的,两个实体类命名方式也是一致的,属性名都是首字母小写,但是dao层命名方式却一个要小写一个要大写,
(声明一下@Field的注解去掉和带上都不会影响这个bug的有无,已测试。)
所以只能把第二个dao层方法使用非完全驼峰命名也就是拼接属性字段名用小写才不报错,,,这到底是idea的bug还是springDataMongonDB的bug也搞不明白,所以特别在这里记录一下。
上边的这个bug,我自己的真实原因和我在解决期间在网上找的报错原因全部不一样,也算是将这个bug的解决方式添加一种吧,但是就是不明白为什么会这样。