AutoTableBindPlugin 自动表映射问题?报错-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

AutoTableBindPlugin 自动表映射问题?报错

爱吃鱼的程序员 2020-06-22 18:40:55 35

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);

----加上这个就可以

分享到
取消 提交回答
全部回答(1)
  • 爱吃鱼的程序员
    2020-06-23 11:53:21

    启动有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>();

    跟我获取数据的时候。。读的不是同一个地方的
    0 0
云计算
使用钉钉扫一扫加入圈子
+ 订阅

时时分享云计算技术内容,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。

推荐文章