数据库框架踩坑记录

GreenDao

  1. 缓存机制,导致更新记录后查询不到真实数据
    问题:更新记录后,数据库中的数据已经更新,但缓存中的数据没有更新,再次查询时直接返回缓存中的数据,导致查询结果不正确。
    解决:清除缓存 DaoSesion.clear() ,会清除所有表的缓存(那么缓存机制意义何在?)
  2. 主键(id)类型必须为包装类
    问题:将主键id设置类型设置为long类型时,不设置id会插入失败
@Entity
public class Student {

    @Id(autoincrement = true)
    private long id;
    private String name;
    private int age;
//在插入第一条数据时,id默认为0,插入成功,继续插入时表中存在id为0的数据,插入失败报错
 Student student = new Student();
 student.setName("张三");
 dao.insert(student);

//手动设置主键id,插入成功
 Student student = new Student();
 student.setId(1);
 student.setName("张三");
 dao.insert(student);

解决:主键id必须为包装类Long

@Entity
public class Student {

    @Id(autoincrement = true)
    private Long id;
    private String name;
    private int age;
//id为包装类时,主键自增才会生效,且主键是从1开始,不是从0开始
 Student student = new Student();
 student.setName("张三");
 dao.insert(student);
  1. 改变数据表中的字段或增加新表会导致数据库被清空

LitePal

  1. 批量插入比循环单条插入速度慢很多

你可能感兴趣的:(数据库框架踩坑记录)