You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 01:25:12