开发者社区> 问答> 正文

AutoTableBindPlugin 自动表映射问题?报错

AutoTableBindPlugin atbp = new AutoTableBindPlugin(druidPlugin,SimpleNameStyles.LOWER);

me.add(atbp);

----我已经加了这个。。但还是报错:

[ERROR]-[Thread: qtp111632506-19]-[com.jfinal.core.ActionHandler.handle()]: /admin/producttype/add
java.lang.RuntimeException: The TableMapping of model: com.ztshop.model.ProductType not exists. Please add mapping to ActiveRecordPlugin(activeRecordPlugin.addMapping(tableName, YourModel.class)).
at com.jfinal.plugin.activerecord.TableInfoMapping.getTableInfo(TableInfoMapping.java:42)


arp.addMapping("producttype", ProductType.class);

----加上这个就可以

展开
收起
爱吃鱼的程序员 2020-06-22 18:40:55 613 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    启动有debug日志。

     log.debug("addMapping("。。

    你看有没有绑定的日志。

    有几种情况可能绑定不了。

    目前有的容器不支持,据说weblogic不行。

    自动绑定其实就是扫描classpath。

    如果你的model在jar包中需要显式的用addJar方法加上你要扫描的jar。

    用AutoTableBindPlugin 就不要加ActiveRecordPlugin,因为前者是后者子类

    如果都不行可以调试一下代码把,有可能是某些情况扫描出问题了


        List<Class<?extendsModel>>modelClasses=ClassSearcher.findInClasspathAndJars(Model.class,includeJars);


    97行


     我操。。SB了。。

    有AutoTableBindPlugin 就不要加ActiveRecordPlugin 了
    难怪一直不成功,我日 我github里面应该有强调这个事情。。。因为atbp是继承了arp....囧这个需要在你的model类上加TableBind注解来绑定你的表。@TableBind(tableName="producttype")

    publicclassProductTypeextendsModel<ProductType>{

    }

    我有绑定的

    @jfinal    DruidPlugindruidPlugin=newDruidPlugin("jdbc:mysql://127.0.0.1/ztshop","root","root");
        druidPlugin.setInitialSize(3).setMaxActive(10);


        me.add(druidPlugin);
         
         
        //配置ActiveRecord插件
        ActiveRecordPluginarp=newActiveRecordPlugin(druidPlugin);
        arp.setShowSql(true);
    me.add(arp);

    AutoTableBindPluginatbp=newAutoTableBindPlugin(druidPlugin,SimpleNameStyles.LOWER);
    atbp.setContainerFactory(newCaseInsensitiveContainerFactory());
    atbp.setShowSql(true);
    me.add(atbp);

    /*arp.addMapping("producttype",ProductType.class);
    arp.addMapping("producttypeattr",ProductTypeAttr.class);*/



        //缓存插件

        me.add(newEhCachePlugin());


    ------我这样写有问题吗?

     我debug了一下。。发现
    AutoTableBindPlugin  中写的 
    private static final Map<Class<? extends Model<?>>, TableInfo> tableInfoMap = new HashMap<Class<? extends Model<?>>, TableInfo>();

    跟我获取数据的时候。。读的不是同一个地方的
    2020-06-23 11:53:21
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载