首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在'class com.sun.proxy.$Proxy398‘中没有名为“委托”的属性的getter

在'class com.sun.proxy.$Proxy398‘中没有名为“委托”的属性的getter
EN

Stack Overflow用户
提问于 2022-09-19 06:31:28
回答 1查看 21关注 0票数 0

当我在我的项目中添加阻断器时,我发现了一个错误,上面写着There is no getter for property named 'delegate' in 'class com.sun.proxy.$Proxy398'

详情如下:

代码语言:javascript
复制
        @Signature(type = StatementHandler.class, method = "prepare", args = {Connection.class,
                Integer.class})
})
代码语言:javascript
复制
        StatementHandler statementHandler = (StatementHandler) invocation.getTarget();
 
        MetaObject metaObject = SystemMetaObject.forObject(statementHandler);

        //obtain mappedStatement
        MappedStatement mappedStatement = (MappedStatement) metaObject.getValue("delegate.mappedStatement");

错误发生在最新的代码中。

MappedStatement mappedStatement = (MappedStatement) metaObject.getValue("delegate.mappedStatement");

EN

回答 1

Stack Overflow用户

发布于 2022-09-19 06:31:28

为什么会发生此错误。我试着找出加法和以前的区别。我发现项目中有一个相同类型的Intercepts Signature

据我们所知,紫花莲插件会自行包装,所以解决它的方法就是获得最终的目标。

代码语言:javascript
复制
 StatementHandler statementHandler;
    Object expectedStatementHandler = invocation.getTarget();
    while (Proxy.isProxyClass(expectedStatementHandler.getClass())) {
        MetaObject metaObject = SystemMetaObject.forObject(expectedStatementHandler);
        //fastReturn
        if (BooleanUtils.isNotTrue(metaObject.hasGetter("h.target"))) {
            log.error("cant find mappedStatement h.get method");
            break;
        }
        expectedStatementHandler = metaObject.getValue("h.target");
    }
    //failFast
    if (!(expectedStatementHandler instanceof StatementHandler)) {
        log.error("sorry,expectedStatementHandler not instanceof StatementHandler!");
        return;
    }

    statementHandler = (StatementHandler) expectedStatementHandler;

    MetaObject metaObject = SystemMetaObject.forObject(statementHandler);

    MappedStatement mappedStatement = (MappedStatement) metaObject.getValue("delegate.mappedStatement");
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73769297

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档