greendao 3.0版本踩坑

最近公司项目需要使用greendao存储本地数据库

遇到了一些问题记录一下,主要是一对多表关联查不出子表数据问题。

greendao使用相信大家网上一搜大量教你试用文章所以前面就不记录了。

贴几个标签

@Id 标明主键
@NotNull 非空

@Unique 添加唯一约束    (一般外键关联字表使用)

@JoinProperty 对于更复杂的关系,可以使用这个注解标明目标属性的源属性

@Property:设置一个非默认关系映射所对应的列名,默认是的使用字段名 举例:@Property (nameInDb="name")

@ToMany:表示一对多属性

坑一:有个坑就是在这里,由于我没有设置@Property这个属性,自动生成的Dao会把你的外键自动转换为大写,如:

主表:

字表:

而,我关联字表设置为

user_id 为小写,导致查不到字表信息。

然后一对多关联,我觉得好理解的就是用主表外键来关联,如:

主表:User 用户表    字表:Order 订单表

User表有 id,user_id,name...
//一对多关联 @ToMany(joinProperties = {@JoinProperty(name = "user_id",referencedName = "user_id")}) public List<Order> orderList;

Order表有 id,name,user_id...

通过user_id外键关联,即,使用父表user_id来关联。

坑二

当修改外键由Long类型改为String类型时,老是提示

Please either mark it with @Keep annotation instead of@Generated...

这是由于主键唯一性

修改就是把自动生成的dao删掉,get,set方法删掉,重新生成。

坑三

打印时候不显示关联字表信息,如

打印时候只显示users信息没有order信息,第一次创建搜索是可以显示的,退出应用后,再去查绚就没有字表信息了,导出db显示时存在user_id关联的。纠结了好久后来打印order信息,发现是存在的

所以放心使用。

坑四

这完全是我不细心导致,

user_id是个随机数,下面order表应该也遍历赋值

ok,简单记录一下

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值