BUG - xutils3的数据库模块org.xutils.ex.DbException: <init> []

2019-10-15 05:42:26


解决这个问题,和类序列化时报错以样的,有了其他的构造方法,就必须填写一个无参的构造方法。

在使用xutil3的数据库模块的时候出现报错org.xutils.ex.DbException: <init> []

问题原因:创建数据库的bean在生成有参数的构造方法时覆盖了没参数的构造方法

解决:生成不带参数的构造方法



这个问题遇到不止一次了,但是每次遇到又忘记了,因为这个提示不明不白的也没说明是什么原因造成的,所以每次都又折腾老半天,这里记录下,以防下次又遇到


原来报错的代码如下


try {

    List<Student> students = mDbManager.selector(Order.class).findAll();

} catch (DbException e) {

    e.printStackTrace();

}

@Table(name="student")

private class Student {

    @Column(name = "id", isId = true)

    public int id;

    @Column(name = "name")

    public String name;

    @Column(name = "age")

    public int age;

    

    public Student(String name, int age) {

        this.name = name;

        this.age = age;

    }

}

报错的原因是Student没有一个public的空构造方法导致的,因为xUtils3框架是利用反射通过空构造方法来生成对象的,而如果没有空构造函数,或者构造函数不为public则无法通过反射生成对象,就会报错


所以数据库bean类的正确写法如下所示,不管空构造函数是否用到,保留着是个好习惯


@Table(name="student")

private class Student {

    @Column(name = "id", isId = true)

    public int id;

    @Column(name = "name")

    public String name;

    @Column(name = "age")

    public int age;

 

    public Student() {

        

    }

    

    public Student(String name, int age) {

        this.name = name;

        this.age = age;

    }

}

 


  • 2020-01-17 15:28:24

    深入理解vue中的slot与slot-scope

    vue中关于插槽的文档说明很短,语言又写的很凝练,再加上其和methods,data,computed等常用选项使用频率、使用先后上的差别,这就有可能造成初次接触插槽的开发者容易产生“算了吧,回头再学,反正已经可以写基础组件了”,于是就关闭了vue说明文档。

  • 2020-01-17 21:20:06

    Nuxt重要点介绍和记录

    nuxt.js简单的说是Vue.js的通用框架,最常用的就是用来作SSR(服务器端渲染).Vue.js是开发SPA(单页应用)的,Nuxt.js这个框架,用Vue开发多页应用,并在服务端完成渲染,可以直接用命令把我们制作的vue项目生成为静态html。

  • 2020-01-17 21:21:42

    nuxtjs打包优化

    然后你再使用 npm run build 打包的时候,会弹出一个界面 当然了,它第一次出来的时候我立马关了,这啥玩意???别着急你慢慢的品,慢慢的看。 原来 这是打包后的JS,面积的大小就是体积的大小。这样我们一目了然的看到了到底那里大了

  • 2020-01-17 23:21:54

    webpack打包优化之外部扩展externals的实际应用

    使用vue-cli创建项目,使用webpack打包。其中,有一个webpack优化webpack.optimize.CommonsChunkPlugin,它会将node_modules中的必需模块提取到vendor文件中,项目开发中,增加第三方模块,比如element-ui、vue-echarts等,vendor的包都会增大。这个时候,就需要考虑减轻vendor包的大小,增加构建速度。我们可以使用webpack的外部扩展(externals)功能。

  • 2020-01-18 01:26:59

    anyProxy使用注意事项

    anyproxy-ca 运行这个命令,如果是mac电脑他会提醒你去通过证书。

  • 2020-01-18 08:54:06

    利用localStorage来处理你的Javascript脚本错误

    localStorage作为HTML5中的新特性,它的出现可以说对于前端性能体验来讲可以获得相当大的改善。存储一些用户经常用到而又不是涉及隐私和安全的东西,的确是一个非常好的选择。下面分享一下用localStorage来处理客户端代码错误的例子来了解一下它的用途吧。