如何通过worklistDocumentNumber查询ObjectBox中关联的ReportMaster数据
如何通过worklistDocumentNumber查询关联的ReportMaster数据(ObjectBox)
针对你的需求,结合现有实体结构,有两种实用的查询方式:
方式一:先查WorkList再关联ReportMaster
先定位到目标WorkList对象,再通过其ID反向筛选关联的ReportMaster:
// 1. 获取WorkList的Box实例 final workListBox = _store.box<WorkList>(); // 2. 根据worklistDocumentNumber查询目标WorkList final targetWorkList = workListBox .query(WorkList_.worklistDocumentNumber.equals("你的目标文档编号")) .build() .findFirst(); if (targetWorkList != null) { // 3. 查询所有关联该WorkList的ReportMaster final reportQuery = _reportMasterBox .query(ReportMaster_.workList.targetId.equals(targetWorkList.id)) .build(); final List<ReportMaster> relatedReports = reportQuery.find(); // 记得关闭查询释放资源 reportQuery.close(); }
方式二:直接使用关联查询一步到位
利用ObjectBox的link方法,直接在ReportMaster的查询中关联过滤WorkList的属性:
// 定义目标文档编号 final targetDocNumber = "你的目标文档编号"; // 构建关联查询 final query = _reportMasterBox .query() .link( ReportMaster_.workList, WorkList_.worklistDocumentNumber.equals(targetDocNumber) ) .build(); final List<ReportMaster> relatedReports = query.find(); // 关闭查询 query.close();
优化建议
如果需要频繁进行这类反向查询,建议在WorkList实体中添加反向关联,让查询更直观:
@Entity() class WorkList{ int id; String? worklistDocumentNumber; String? worklistStatus; // 添加反向关联到ReportMaster final reports = ToMany<ReportMaster>(); WorkList({ this.id = 0 , this.worklistDocumentNumber, this.worklistStatus, }); }
生成ObjectBox模型后,就可以直接通过targetWorkList.reports获取所有关联的ReportMaster列表。
内容的提问来源于stack exchange,提问作者Guhan
相关产品推荐
相关产品推荐

