JavaWeb项目有同学使用mysql用到模糊查询时,因为模糊查询的时候会耗费一定的时间,需要去优化模糊查询。而不是直接使用 like ‘%%’ 这样的函数。当使用LOCATE(‘substr’,str,pos)这个函数时,javaweb项目会报错function.TemplateRenderer (TemplateRenderer.java:104) - HHH000174: Function template anticipated 3 arguments, but 2 arguments encountered。特此记录。
该函数用两种使用方式
LOCATE(‘substr’,str);和LOCATE(‘substr’,str,pos);
当使用的是LOCATE(‘substr’,str)函数时,因为此函数只传递两个参数,而不是允许的最大3个参数。Hibernate类TemplateRenderer检测到这一点,并生成看到的警告消息。
其实这个警告是可以忽略掉的,因为Hibernate只是检测到参数不一致,但实际上此函数是可以运行的。