VO.executeQuery () устанавливает RowIterator в первой строке - PullRequest
0 голосов
/ 23 марта 2020

Я новичок в ADF Framework и JDeveloper. Я сталкивался с таким поведением ViewObject в ADF. Я вызываю REST Service (пользовательский метод) для ViewObject (т.е. VO) , который вызывает метод (давайте назовем его captureSomething ) в его класс реализации (т.е. VOImpl. java) . В методе captureSomething я выполняю что-то вроде следующего фрагмента кода:

vo.applyCriteria(someCriteria);
vo.setNamedWhereClause(/* Some parameters set here */);
vo.executeQuery();
System.out.println(vo.getCurrentRowIndex());

System.out.println (vo.getCurrentRowIndex ()), иногда печатает -1 а иногда печатает 0 . Но во всех случаях одна строка была возвращена в executeQuery (). Разве RowIterator не сбрасывается при запуске vo.executeQuery () ? Не удалось ли выполнить executeQuery () в то время, когда он печатал 0?

Я просмотрел это в Интернете, пытаясь выяснить, почему это происходит, но не смог ничего найти.

Не уверен, что это имеет отношение или имеет какое-либо отношение к этому поведению, но я прилагаю некоторый код для справки:

У меня есть прикладной модуль с именем RestAM и его DataModel , у нас есть VO . Добавлен REST WebService в RestAM и добавлено VO в качестве ресурса.

Я создал пользовательский метод для VO in RestAM_VOResources. xml.

<methodAction IterBinding="VOIter" id="captureSomething"
              RequiresUpdateModel="true" Action="invokeMethod"
              MethodName="captureSomething"
              IsViewObjectMethod="false"
              DataControl="RestAMDataControl"
              InstanceName="bindings.VOIter"
              IsLocalObjectReference="true">
  <NamedData NDName="param1" NDType="java.lang.Long"/>
  <NamedData NDName="param2" NDType="java.sql.Date"/>
</methodAction>

Я создал captureSomething метод в VOImpl. java (класс реализации VO). Код похож на первый фрагмент кода, который я прикрепил выше.

...