specification查问不起作用

写后盾的时候须要加一个specification查问,只返回属于该社区的数据。

于是我减少了如图红框中的查问,调用了and函数。

 specification.and(VehicleSpecs.belongToCommunity(district.getId()));

然而执行后发现,这条查问没有依照想法获取到查问到数据,相当于这条查问并没有作用

在打断点之后,发现的确进入了查问函数里

测试了很多遍还是如此,这条查问语句并没有起作用。

起初查谷歌之后发现有人和我遇到同样的问题。
解决办法很简略:
让specification等于and函数返回值

也就是这样:

specification = specification.and(VehicleSpecs.belongToCommunity(district.getId()));

而后回过头看and函数的申明才发现:
返回的是一个Specification类型的数据。也就是说,我并没有保留这个数据,所以查问生效了。
应该从新给本地变量赋值。这样能力使查问真正增加下来。


之后回过头来想想,我没有想到从新赋值的起因,可能是习惯了下图中的形式,即调用了函数,就真正地把数据增加了进去,不必再去从新赋值。

总结

总结来说还是须要真正看函数的申明,查看它的返回值,以确定是否须要执行相干的操作。因为这个函数的用法和返回值都写在了申明中。

单元测试数据不统一

在单元测试中,第187行产生的谬误。

MockMvc返回的值与冀望的值不统一


然而去控制台一看:值是雷同的。期望值是0,理论值也是0。这就很奇怪了,期望值和理论值雷同,为什么两者没有通过判断呢。

很容易分割到是类型出了问题。


测试发现,Long,Integer, String, 都通过了。 没通过的是Short类型的数据,即红框中的数据。

起初在前面加上 .toString()能失常通过。

这里mvc的json类型的数据是string类型, 与short类型数据判断的时候失败了,可能是两者不能失常辨认。