objectbox 问题汇总

本文探讨了ObjectBox ORM框架中的混淆文件编写难题,揭示了无需手动编写混淆规则的库兼容特性。同时,深入解析了1:N关系查询的实现方法,包括如何查询N端和1端的数据,提供了具体的QueryBuilder实例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

怎么写混淆文件

你会发现在官网找不到 proguard-rules.pro 的规则说明,在官方的github 的demo上 开发团队是这样说的在这里插入图片描述
很牛掰,大意是

你不必写混淆规则,我们写的库,兼容必要的混淆规则

。不知道这是啥操作。

MyObjectBox 找不到问题

Application 中 MyObjectBox的生成位置,是随着你注解不同的数据bean类而生成的,数据bean类位置不同,很容易导致MyObjectBox的生成位置不同,如果application中一开始引入了一个位置,很容易造成在注解第二个实体类的时候找不到MyObjectBox.java。

还有就是app的gradle中如果引用了 apply plugin: ‘android-apt’ 后面有引入了kotlin 注解处理器需要换成 apply plugin: ‘kotlin-kapt’

ToMany 1 :N 关系 (查询 N端)

比如有下面一个类似的实体, 东城区下 有很多商圈 一个大List 下有一个子项是List
在这里插入图片描述

如果我想获取东城区子项list中的name,的集合,那么数据定义的时候类似这样
父List需要定义一个关联子List的 ToMany的关系集合
在这里插入图片描述

  1. 建立关于子类的查询
QueryBuilder<BizcirclListEntity> query = bizcirclListEntityBox.query();

2.让这个子类的查询关联父类的ToMany 关系的字段,这里切记,只是简单的调用query.backlink, 不要画蛇添足的 弄成 Builder builder = query.backlink。。。的形式,因为如果这样,获得的builder又变成父类的了,不需要。如果用这个builder查询 ,会报 This call is not supported on sub query builders 的错误

query.backlink(DistrictAndCircleVoEntity_.bizcirclListentity)
                    .equal(DistrictAndCircleVoEntity_.districtId, "110101");
  1. 关联完毕,直接查询
String[] strings = query.build().property(BizcirclListEntity_.name).findStrings();

ToMany 1 :N 关系 (查询 1端)

还是上面那个实体,如果我想要查询 所有包含东直门的所有城区,怎么查呢?
1.建立 东直门那个实体的查询的builder

QueryBuilder<DistrictAndCircleVoEntity> query1 = circleVoEntityBox.query();

2.将该builder关联实体类中的定义的ToMany关系,注意后面的equal 是子list中的字段

query1.link(DistrictAndCircleVoEntity_.bizcirclListentity).equal(BizcirclListEntity_.name, "东直门");

3.查询结果

 String[] strings2 = query1.build().property(DistrictAndCircleVoEntity_.districtName).findStrings();
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值