题
运行KODO 4.2和具有低效问题查询被KODO生成。出现这种情况获取包含集合,其中该集合具有bidrectional关系回到第一个对象的对象时。
Class Classroom
{
List<Student> _students;
}
Class Student
{
Classroom _classroom;
}
如果我们创建了一个获取计划通过设置以下抓取计划,让教室及其相应的学生名单:
fetchPlan.addField(Classroom.class,” _学生”);
这将导致两个查询(拿到教室,然后获得了在这些教室里的所有学生),这是我们所期望的。
但是,如果我们包括以参考回教室取我们计划在_classroom场得到通过做fetchPlan.addField填充(Student.class,“_classroom”),这将导致额外的X号查询其中X是学生在每个教室的数量。
谁能解释如何解决这一问题? KODO已经有原来的课堂,它的执行查询检索课堂对象,并将它们设置在每个学生对象的_classroom场点的对象。所以,我希望KODO只需相应地设置每个学生对象在_classroom领域的那些对象,而不是返回到数据库中。
再次,文档最缺但是从我读过它应该能够更有效地做到这一点。
Note-- EAGER_FETCH.PARALLEL被接通并且我与缓存(查询和数据高速缓存)接通和断开并且在所得到的查询没有差别尝试这样做。
解决方案
使用Oracle支持在此this--曾为是在科多4.2(最新版本)中的缺陷。解决方法是完全取出默认取组属性(不要只是将其设置为true或false)从JDO元数据文件是在双向关系的一对一方的字段。所以在上面的例子中,你会拿出对Student._classroom字段的默认取-group属性。
不隶属于 StackOverflow