Я новичок в 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). Код похож на первый фрагмент кода, который я прикрепил выше.