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-03-11 21:22:36

    Vue的组件化之notification组件/Vue.extend()

    一、把组件的内部结构写好,写成一个vue文件notification.vue。 二、全局设置组件属性。//如果后面不需要直接引入组件的方式调用,可以不用全局注册 index.js中一般写的是需要全局设置的属性。

  • 2020-03-13 19:58:19

    推荐Android两种屏幕适配方案

    在Android开发中,由于Android碎片化严重,屏幕分辨率千奇百怪,而想要在各种分辨率的设备上显示基本一致的效果,适配成本越来越高。虽然Android官方提供了dp单位来适配,但其在各种奇怪分辨率下表现却不尽如人意,因此下面探索一种简单且低侵入的适配方式。本文将推荐两种屏幕适配方案,大家可以根据实际情况使用。

  • 2020-03-14 16:35:00

    nuxt.js部署全过程(ubuntu+nginx+node+pm2)

    系统的话本篇是Ubuntu 16.04.6 ,centos也行,大同小异都是Linux。不过如果你是初学者,最好和我使用一样的,因为因为发行版本不同而导致的差异可能导致运行某些东西失败,找问题要找好久。windows server不推荐了,企业用的多,小服务器跑windows server比较费劲。

  • 2020-03-14 23:15:25

    icomoon使用详细介绍

    此篇博文讲述如何利用icomoon导入图标,从而把自己想要的都通过icomoon方式进行,大家都知道,网站以及移动端,用图标还是尽量选择这种。因为直接用image有些图标会失真,从而也是前端开发之中,需求去掌握的一项,很简单的就几个步骤。

  • 2020-03-14 23:39:59

    vuetify和@nuxt/vuetify icon 之我见

    vuetify中v-icon,貌似默认支持 Material Design Icons, Material Icons, Font Awesome 4 and Font Awesome 5, 我自己单独引入了vuetify 用哪一个图标都没有问题。但是用了@nuxt/vuetify只能用mdi-home这样的。不知道因为啥。肯定是封装后,封装成一个了。 但是我修改vuetify的设置,哪一个图标也都能用。哎,不过多研究了。

  • 2020-03-16 15:57:53

    nuxtjs中单独引入Message组件的问题

    // 引入elementUIimport { Message } from 'element-ui';//由于Message组件并没有install 方法供Vue来操作的,是直接返回的,因此按照官方文档单独引入的方法是//会报错的,需要给 Message 添加 install 方法Message.install = function (Vue, options) {Vue.prototype.$message = Message}Vue.use(Message )//消息提示