Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java KODO:如何设置双向关系的获取计划?_Java_Orm_Jdo_Kodo - Fatal编程技术网

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

Java KODO:如何设置双向关系的获取计划?,java,orm,jdo,kodo,Java,Orm,Jdo,Kodo,运行KODO 4.2并出现问题:KODO生成的查询效率低下。当将包含集合的对象(该集合具有双向关系)回迁到第一个对象时,会发生这种情况 Class Classroom { List<Student> _students; } Class Student { Classroom _classroom; } 如果我们创建一个获取计划,通过设置以下获取计划来获取教室及其相应学生的列表: fetchPlan.addfield教室.class,“\u学生” 这将导致两

运行KODO 4.2并出现问题:KODO生成的查询效率低下。当将包含集合的对象(该集合具有双向关系)回迁到第一个对象时,会发生这种情况

Class Classroom
{
     List<Student> _students; 
}

Class Student
{
     Classroom _classroom;
}
如果我们创建一个获取计划,通过设置以下获取计划来获取教室及其相应学生的列表:

fetchPlan.addfield教室.class,“\u学生”

这将导致两个查询得到教室,然后得到教室中的所有学生,这是我们所期望的

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

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

再一次,文档非常缺乏,但从我所阅读的内容来看,它应该能够更有效地做到这一点


注意-EAGER_FETCH.PARALLEL已打开,我已在打开和关闭缓存查询和数据缓存的情况下尝试了这一点,结果查询没有差异。

与Oracle支持合作解决了这一问题-这是Kodo 4.2最新版本中的一个缺陷。修复方法是完全去掉默认的fetchgroup属性,而不只是从jdo元数据文件中为双向关系中一对一的字段将其设置为true或false。因此,在上面的示例中,您将去掉Student.\u教室字段的默认fetch group属性