我有两种基本的文档类型:
我正在使用Ektorp作为驱动程序。现在有两个POJO,它们反映了文档,并且病人POJO还具有一个Set<Analysis>
,由@DocumentReferences
批注标记(我实际上并不需要,但是以后可能会用它来显示针对例如一位病人)。
但是,我要做的是使用分页向TableView填充行,其中包含有关Patient AND Analysis的信息,并按分析日期降序排列。 现在,我唯一的想法是
在代码中看起来像这样:
PageRequest pageRequest = PageRequest.firstPage(5);
ViewQuery query = new ViewQuery()
.designDocId("_design/analysis")
.viewName("by_date")
.descending(true)
.includeDocs(true);
Page<Analysis> result = db.queryForPage(query, pageRequest, Analysis.class);
for(Analysis analysis : result) {
Patient patient = db.find(Patient.class, analysis.getPatientId());
Row row = new Row(patient, analysis);
//TODO: ...Populate TableView...
}
这听起来很麻烦。有一个更好的方法吗?我可以一次(或至少一次查询)反序列化我需要的数据吗?
我知道有a way可以使用{_id: doc.patientId}
作为emit()
函数中的值,以便在通过参数include_docs=true
查询时为每个Analysis返回Patient(患者),但是我不确定如何使用对我有利。
我可以将“患者”嵌入到Analysis中,但是如果“患者”发生变化,我将不得不更改每个Analysis文档,所以这不是一个好的解决方案。 我已经多次阅读了these two个文档段落,但是我终生无法弄清楚如何使用Ektorp来实现它们。 任何帮助将不胜感激。