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;

    }

}

 


  • 2019-09-08 21:45:31

    git index.lock

    因是在你进行某些比较费时的git操作时自动生成,操作结束后自动删除,相当于一个锁定文件,目的在于防止对一个目录同时进行多个操作。 有时强制关闭进行中的git操作,这个文件没有被自动删除,之后你就无法进行其他操作,必须手动删除,进入.git文件中删除,打开显示隐藏文件。如果没有看见.git文件夹,可以直接用命令rm -f ./.git/index.lock。之后就可以正常使用。 ———————————————— 版权声明:本文为CSDN博主「李瑞豪」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/qq_39520417/article/details/81941111

  • 2019-09-09 05:28:54

    IntelliJ IDEA 进阶教程: 语言注入

    我真的太久没发 IntelliJ 的教程了,最近 Sakura 同学找我帮他配 IntelliJ ,我秀了一下技术,假装自己是老司机。 然后发现 Language Injection 这个非常好用的功能我居然没写教程(很明显,一堆人不知道这个东西), 于是我又开始写教程了。 本文多图。

  • 2019-09-09 05:32:55

    SrpingBoot 热启动与热部署

    当我们已经启动了一个服务,然后修改代码之后,会自动重新部署。Spring项目通常有新内容修改后需要重新编译然后运行。通过配置Spring boot的热启动配置,可以实现自动编译重启项目,通常要比手动停止,启动项目快。