jfinal 自动生成的映射文件mappingkit里,视图没有primaryKey,导致启动报错
发布于 2 年前 作者 jiyinyiyong 214 次浏览 来自 问答  二维码

jfinal2.2 框架下,使用generator自动生成model,mappingkit文件里生成的语句是类似下面这样的,但是没办法启动,因为第二个参数是主键,视图CV_VEHICLE因为没有主键,报错java.lang.IllegalArgumentException: Primary key can not be blank

arp.addMapping("CV_VEHICLE", "", CvVehicle.class);

现在我的解决办法是手动把所有视图的第二个参数去掉,变成 arp.addMapping("CV_VEHICLE", CvVehicle.class);

可这样每次重新生成都得去修改一遍很是麻烦,请教各位大神,除了改generator源码以外有没有什么办法解决????

====================

另外修改源码的办法,我在源码MappingKitGenerator类中找到这一节

protected void genMappingMethod(List tableMetas, StringBuilder ret) {
        ret.append(String.format(this.mappingMethodDefineTemplate));
        Iterator i$ = tableMetas.iterator();

        while(i$.hasNext()) {
            TableMeta tableMeta = (TableMeta)i$.next();
            boolean isCompositPrimaryKey = tableMeta.primaryKey.contains(",");
            if (isCompositPrimaryKey) {
                ret.append(String.format(this.compositeKeyTemplate, tableMeta.primaryKey));
            }

            //就是这一句在拼addMapping语句,表名,主键,model类
            String add = String.format(this.mappingMethodContentTemplate, tableMeta.name, tableMeta.primaryKey, tableMeta.modelName);
            
            ret.append(add);
        }

        ret.append(String.format("\t}%n"));
    }

我想问的是这玩意里该如何判断是视图还是表?
还是只能在命名的时候用前缀区分表和视图,可是这样用在不同前缀的数据库时就又要改源码了,刚接触这个jfinal,也不知道说清楚没有,我也是很纠结啊。。。。

回到顶部