Java Oracle ADF:ViewCriteria执行时,生命周期方法调用需要很长时间;“记忆中”;模式

Java Oracle ADF:ViewCriteria执行时,生命周期方法调用需要很长时间;“记忆中”;模式,java,oracle,oracle-adf,Java,Oracle,Oracle Adf,我在ViewObject“myVO”上创建了ViewCriteria“findByID1”。此视图条件的执行模式已设置为“内存中”。 每当我以编程方式应用视图条件并执行对ViewObject的所有方法(hasNext、getRowCount、next等)的调用时,总是要花费很长的时间。我已经检查了多次,并确认使用where子句的实际查询不会花费很长时间来获取结果。这进一步表明,有时ViewObject不会返回任何记录,但方法调用仍然需要很长时间。 任何人都可以提出这种行为的可能原因 下面的代码片

我在ViewObject“myVO”上创建了ViewCriteria“findByID1”。此视图条件的执行模式已设置为“内存中”。 每当我以编程方式应用视图条件并执行对ViewObject的所有方法(hasNext、getRowCount、next等)的调用时,总是要花费很长的时间。我已经检查了多次,并确认使用where子句的实际查询不会花费很长时间来获取结果。这进一步表明,有时ViewObject不会返回任何记录,但方法调用仍然需要很长时间。 任何人都可以提出这种行为的可能原因

下面的代码片段:

ViewCriteria vcInMemory =
  this.getVO1().getViewCriteria("inMemoryViewCrit");
this.getVO1().applyViewCriteria(vcInMemory );
this.getVO1().setNamedWhereClauseParam("pTimeDefinitionId",
                                                 this.getParentVO().getCurrentRow().getAttribute("TimeDefinitionId"));
this.getVO1().executeQuery();
// this.getVO1().getRowCount();     // tried executing this lifecycle method. This is also taking very long time(~180 seconds). Even if in a lot of cases, it doesnt return any records (i.e 0 for this method)
if (this.getVO1().hasNext()) {      // method call taking long time : ~ 180 seconds.

  while (this.getTimePeriod3().hasNext()) {
    this.getTimePeriod3().next();
    this.getTimePeriod3().removeCurrentRow();
  }

默认情况下,视图对象对数据库执行查询,以检索其结果行集中的行。在执行executeQuery()之前,需要通过调用setQueryMode()API来更改QueryMode

有关更多详细信息,请查看

getVO1().setQueryMode( ViewObject.QUERY_MODE_SCAN_VIEW_ROWS | 
                       ViewObject.QUERY_MODE_SCAN_ENTITY_ROWS);