GreenDao
-
缓存机制,导致更新记录后查询不到真实数据
问题:更新记录后,数据库中的数据已经更新,但缓存中的数据没有更新,再次查询时直接返回缓存中的数据,导致查询结果不正确。
解决:清除缓存DaoSesion.clear()
,会清除所有表的缓存(那么缓存机制意义何在?) -
主键(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);
- 改变数据表中的字段或增加新表会导致数据库被清空
LitePal
- 批量插入比循环单条插入速度慢很多