#join #apache-cayenne
#Присоединиться #apache-cayenne
Вопрос:
Мы используем 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();
...
}
Cayenne выполняет правильные объединения на уровне базы данных, но вместо полного разрешения bvSomeMain getMethod_relation1 запускает новый select с уже предварительно выбранным ОТНОШЕНИЕМ1.
Мы используем Apache Cayenne 4.0
Спасибо за подсказку.
Комментарии:
1. Здесь нет ничего очевидного (предварительные выборки работают довольно надежно). Какие-либо предупреждения в программе моделирования? Не могли бы вы опубликовать сведения о сопоставлении для исходного и целевого объекта этого отношения. Также это проблема с одним конкретным отношением или со всеми 3 из них?
2. Кроме того, если это большая выборка, возможно, извлеченные объекты удаляются из кэша моментальных снимков довольно рано (в этом случае вы можете увеличить размер кэша моментальных снимков).