首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >KODO:如何设置双向关系的获取计划?

KODO:如何设置双向关系的获取计划?
EN

Stack Overflow用户
提问于 2010-04-15 05:37:33
回答 1查看 312关注 0票数 0

运行KODO 4.2,并遇到由KODO生成的低效查询的问题。当获取一个包含集合的对象时,就会发生这种情况,其中该集合与第一个对象具有双向关系。

代码语言:javascript
复制
Class Classroom
{
     List<Student> _students; 
}

Class Student
{
     Classroom _classroom;
}

如果我们创建一个抓取计划,通过设置以下抓取计划来获取教室及其对应学生的列表:

fetchPlan.addField(Classroom.class,“_students”);

这将导致两个查询(获取教室,然后获取这些教室中的所有学生),这是我们所期望的。

但是,如果我们在获取计划中包含对教室的引用,以便通过执行fetchPlan.addField(Student.class,“_classroom”)来填充_classroom字段,这将导致X个额外的查询,其中X是每个教室中的学生数量。

有人能解释一下如何解决这个问题吗?KODO在执行查询以检索教室对象并在每个学生对象的_classroom字段中设置它们时,已经拥有了原始的教室对象。因此,我希望KODO只需相应地在每个学生对象的_classroom字段中设置这些对象,而不会返回到数据库。

再说一次,文档非常缺乏,但从我所读的内容来看,它应该能够更有效地完成这项工作。

注意-- EAGER_FETCH.PARALLEL是打开的,我试过打开和关闭缓存(查询和数据缓存),结果查询没有区别。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-04-24 03:01:05

在这方面与Oracle支持一起工作--这是Kodo 4.2 (最新版本)中的一个缺陷。修复方法是从jdo元数据文件中为处于一对一关系中的字段完全删除default-fetch-group属性(而不仅仅是将其设置为true或false)。因此,在上面的示例中,您将删除Student._classroom字段的default-fetch-group属性。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2641239

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档