这个项目你自己跑的通么...
Opened this issue · 0 comments
mzygQAQ commented
分表的拦截器 invocation.getTarget(..)获取的对象 只是一个RoutingStatementHandler的代理对象,instanceof不成立的 而且强转会出错...
加这个方法就可以:
/**
* 如果一个类是被代理的对象,则获取其被代理的原始类型.
* 存在可能一个代理类代理的也是一个代理类,这里会递归的获取最终的真实对象.
* @param target 疑似被代理的对象.
* @param 真实对象的类型.
* @return 最终的真实对象.
*/
public static T safeGetRealTarget(Object target) {
if (Proxy.isProxyClass(target.getClass())) {
MetaObject metaObject = SystemMetaObject.forObject(target);
return safeGetRealTarget(metaObject.getValue("h.target"));
} else {
return (T) target;
}
}