Join Apache Cayenne ResultIterator和预取接头

Join Apache Cayenne ResultIterator和预取接头,join,apache-cayenne,Join,Apache Cayenne,我们正在使用Cayenne搭配以下部件 ResultIterator<SomeMain> lvSomeMainList = ObjectSelect .query(Anlstamm.class) .and(SomeMain.ORGUNIT_NR.eq(pvOrgUnitNr)) .prefet

我们正在使用Cayenne搭配以下部件

    ResultIterator<SomeMain> lvSomeMainList = ObjectSelect
                               .query(Anlstamm.class)
                               .and(SomeMain.ORGUNIT_NR.eq(pvOrgUnitNr))
                               .prefetch(SomeMain.RELATION1.joint())
                               .prefetch(SomeMain.RELATION2.joint())
                               .prefetch(SomeMain.RELATION3.joint())
                               .iterator(gvContext);
 

    for (SomeMain bvSomeMain: lvSomeMainList) {

                           bvSomeMain.getMethod_relation1();
                            ...
    }
ResultIterator lvSomeMainList=ObjectSelect
.query(Anlstamm.class)
.和(某些主要组织单元(pvOrgUnitNr))
.prefetch(SomeMain.RELATION1.joint())
.prefetch(SomeMain.RELATION2.joint())
.prefetch(SomeMain.RELATION3.joint())
.迭代器(gvContext);
for(SomeMain bvSomeMain:lvSomeMainList){
bvSomeMain.getMethod_relation1();
...
}
Cayenne在DB级别执行正确的联接,但getMethod_relation1没有完全解析bvSomeMain,而是使用已预取的relation1触发新的select

我们正在使用Apache Cayenne 4.0


谢谢你的提示。

这里没有什么明显的东西(预回迁工作相当可靠)。建模器中有任何警告吗?您可以发布此关系的源实体和目标实体的映射详细信息吗。这也是一个特定关系或所有三个关系的问题吗?此外,如果是大型提取,则可能很早就从快照缓存中取出了提取的对象(在这种情况下,您可能需要增大快照缓存的大小)。