[B cannot be cast to java.lang.String

sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    java.lang.reflect.Method.invoke(Method.java:597)
    org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:307)
    org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182)
    org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149)
    org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:106)
    org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
    org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
    $Proxy22.getAllNoticeList(Unknown Source)

昨天一下午找的bug。这个错误代码,百度谷歌了一下。大概都能知道是什么原因导致的错误。可是有些错误是非常细了。就比方这个。因此记录下来,希望以后不要再犯。
先贴上之前百度的。solve
这个错误通常是类型不匹配。详细的什么类型,要看你的是什么数据了,从数据库中查询的数据是乱码。可是数据库里显示的是正常的utf-8,原因在于用到了嵌套查询,嵌套查询中使用了中文字符串拼接。然后就斯巴达了,事实上这个错误非常easy避免的,由于測试的时候用的本地数据库才出现的,用server的数据库嵌套查询不会出现乱码。应该是MySql的设置问题。可是能够通过sql语句中增加编码来解决,就是这样。

原文地址:https://www.cnblogs.com/mthoutai/p/6986522.html