Operation hasNext is invalid for a working set view object

Can someone point me to soem documentation to why I'm getting this error? I'm obviously misunderstanding something fundamental.
Thanks

I have an application module with a client method as follows:
public void setUserCredentials(String username, String password)
UserAccountViewImpl vo = getUserAccountView1();
vo.setWhereClauseParam(0, username);
vo.setWhereClauseParam(1, password);
vo.executeQuery();
if (vo.hasNext()) (BREAK POINT TWO)
vo.next();
I have a struts action that is based on the BasicADFAction class in the tech paper "Oracle ADF Data Binding Primer and ADF/Struts Overview"
by Steve Muench.
public class IsLoginValidAction extends BasicADFAction
protected ActionForward performActionLogic(ActionMapping mapping,
ActionForm form, HttpServletRequest request, HttpServletResponse response)
throws Exception
.... other code that gets username and password from form
DatamartModule am = (DatamartModule)getApplicationModule("DatamartModuleDataControl", request);
am.setUserCredentials(username, password);
ViewObject vo = am.findViewObject("UserAccountView1");
if (vo.getCurrentRow() == null) -- BREAK POINT ONE
ae.add("InvalidDetails", new ActionError("error.IsLoginValidAction.InvalidDetails"));
return mapping.findForward("LoginError");
UserAccountViewRowClient vr = (UserAccountViewRowClient)vo.getCurrentRow();
.... do some other checks with the user account
As you can see the above Action calls setUserCredentials(). What is driving me mad is the following. If I enter a valid username and password in the login page and reach break point one the method vo.getCurrentRow() returns null which is not what I expect!
If I re-submit my login details again, when I reach break point one for the second time vo.getCurrentRow() is not null??
I have also set a break point two just to make sure setUserCredentials is working and it always brings back a row when I enter the correct details. So why in the action when I select the same view object the current row is not available to me but is available the second time round?? I'm I missing something fundamental??
I had some feedback on metalink where oracle support set check that the vo.isExecuted() == true and if it isn't then re-execute the query. I couldn't see why I should do this but I did. I found that vo.isExecuted is false the first time round but true the second time. It appears the first time round I am implicitly getting the query to execute for the first time even though I believe I have already done this in the setUserCredentials method.
After adding a vo.executeQuery() I obviously needed to add code that obtained the row. As soon as vo.hasNext() is called I get:
oracle.jbo.InvalidOperException: JBO-25048: Operation hasNext is invalid for a working set view object.
     at oracle.jbo.common.ws.WSObject.invalidOperation(WSObject.java:44)
     at oracle.jbo.common.ws.WSRowSetIteratorBase.hasNext(WSRowSetIteratorBase.java:381)
     at view.IsLoginValidAction.performActionLogic(IsLoginValidAction.java:66)
     at view.BasicADFAction.handleLifecycle(BasicADFAction.java:64)
     at view.BasicADFAction.execute(BasicADFAction.java:46)
     at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:484)
     at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274)
     at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
     at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525)
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
     at com.evermind[Oracle Application Server Containers for J2EE 10g (9.0.4.0.0)].server.http.ResourceFilterChain.doFilter(ResourceFilterChain.java:65)
     at oracle.security.jazn.oc4j.JAZNFilter.doFilter(Unknown Source)
     at com.evermind[Oracle Application Server Containers for J2EE 10g (9.0.4.0.0)].server.http.EvermindFilterChain.doFilter(EvermindFilterChain.java:16)
     at oracle.adf.model.servlet.ADFBindingFilter.doFilter(ADFBindingFilter.java:228)
     at com.evermind[Oracle Application Server Containers for J2EE 10g (9.0.4.0.0)].server.http.ServletRequestDispatcher.invoke(ServletRequestDispatcher.java:600)
     at com.evermind[Oracle Application Server Containers for J2EE 10g (9.0.4.0.0)].server.http.ServletRequestDispatcher.forwardInternal(ServletRequestDispatcher.java:317)
     at com.evermind[Oracle Application Server Containers for J2EE 10g (9.0.4.0.0)].server.http.HttpRequestHandler.processRequest(HttpRequestHandler.java:790)
     at com.evermind[Oracle Application Server Containers for J2EE 10g (9.0.4.0.0)].server.http.HttpRequestHandler.run(HttpRequestHandler.java:270)
     at com.evermind[Oracle Application Server Containers for J2EE 10g (9.0.4.0.0)].server.http.HttpRequestHandler.run(HttpRequestHandler.java:112)
     at com.evermind[Oracle Application Server Containers for J2EE 10g (9.0.4.0.0)].util.ReleasableResourcePooledExecutor$MyWorker.run(ReleasableResourcePooledExecutor.java:192)
     at java.lang.Thread.run(Thread.java:534)
I must misunderstand something fundamental. Any help would be really appreciated. Basically in my client code (The struts action) I want to access a single record that is based on a view. I prepare the view object by calling a custom service level method to set the username and password and execute the query.

Similar Messages

  • JBO-25048: Operation getAllRowsInRange is invalid for a working set view ob

    I'm new to JDeveloper, so please forgive my ignorance...but I'm having a problem creating a list binding in LOV mode. After placing the list of values attribute on the jsp and making changes in the List Binding Editor, I receive the following error when I try testing the page.
    JBO-25048: Operation getAllRowsInRange is invalid for a working set view object.
    Any suggestions or hints to help me on my way would be greatly appreciated. Thanks.

    You should consider switching your application to Immediate Mode. You typically should never need to manually call the sync() method.
    Here is some advice on Batch Mode versus Immediate Mode.
    http://www.oracle.com/technology/products/jdev/collateral/papers/10g/adftoystore/readme.html#batchmode
    Usually this error occurs if you attempt to work with an iterator binding before the prepareModel() method has been invoked in the DataAction lifecycle.
    When batch mode is being used, the prepareModel() method internally batches up all the calls to execute the view objects referred to by iterator bindings in the current binding container and then syncs the operations in a single round-trip with the (either logically- or physically- separated) middle-tier application module.

  • ADF Databound Drop Down causes "invalid for working set view object"

    I've created a drop-down list per the instructions laid out in the "Creating a Databound Drop Down List in Oracle JDeveloper 10g" HowTo ( http://otn.oracle.com/products/jdev/tips/mills/databound_lists.html ). The list works fine when editing an existing row, but I get the following error when working with a newly created row:
    JBO-25048: Operation getAllRowsInRange is invalid for a working set view object.
    The drop-down list actually gets populated correctly despite the error. The error only occurs the first time I access the detail page that uses the list. I'm guessing that this may have something to do with the fact that the row value associated with with list is null.
    Any ideas on how to workaround this one? Thanks.

    Thanks Duncan.
    The ViewObject that is bound to the list is only used for the purposes of the list so there shouldn't be any problem with its state being altered elsewhere. Not sure if that's what you mean by collisions or not...
    I tried adding a "null/empty" value to the list but the results are the same.
    What is meant by "working set view object"? What other types of ViewObject are there? How are they different and how does someone know which operations are valid/invalid?

  • Working set view object

    Hi all,
    I tried to set manually a row in a ViewObject as current with following code
    ctx.getBindingContainer().findIteratorBinding("kksobjectVO").setCurrentRowWithKeyValue("100");
    But I get follwing error code
    oracle.jbo.InvalidOperException: JBO-25048: Operation getKeyAttributeDefs is invalid for a working set view object
    Sometimes I get this error and sometimes not. How can prevent from this error.
    thx

    Hi Shailesh,
    I called this method in Steve's
    initializeModelForPage(...) method. I solved this problem by setting directly through setCurrentRow. I avoided to use the BindingContainer. Already I don't know how I can use the setCurrentRowWithKeyValue in initializeModelForPage.
    In the initializeModelForPage I'm working directly with the ViewObjects. It's not the best way, but it works.
    Do you know how I can work with BindingContainer methods, like setCurrentRowWithKeyValue inside the initializeModelForPage-method?
    thx

  • IMG Setting for Fleet Management - Set Reference Object for Vehicles

    On other SAP 4.7 systems I have been able to access in the IMG "Set Reference Object Screen for Vehicles" under the "Settings for Fleet Management".  I am currently working in a system that doesn't have that option in the IMG.  What do I have to do to get this menu in the IMG?

    Hi,
    All the extra features provided by business functions in PLM are documented in note [1389108|https://service.sap.com/sap/support/notes/1389108]. See the pdf attachment in that note.
    -Paul

  • Dirty check for transient attributes in view object

    Hi,
    I am using JDeveloper 11.1.1.4 and ADF BC in my project.
    In one of my view objects,I have a transient attribute added for some business logic.
    I am doing dirty check in my project as below.
    boolean dirty = false;
    boolean amDirty = false;
    // check application module
    ApplicationModule am =
    getBindingContainer().getDataControl().getApplicationModule();
    amDirty = am.getTransaction().isDirty();
    //Check if datacontrol is dirty
    BindingContext bctx =
    oracle.adf.controller.binding.BindingUtils.getBindingContext();
    dirty =
    bctx.findDataControlFrame(bctx.getCurrentDataControlFrame()).isTransactionDirty();
    return amDirty || dirty;
    My requirement is that,I dont want the dirty check to be applied on the transient attribute in the view object.
    Is there any way to achieve this.Please advice...
    Regards,
    Praveen

    Hi Frank,
    Thanks for the suggestion.
    I followed the link.But if a transient attribute is modified,then also ((ApplicationModule)getDataProvider()).getTransaction().isDirty() is returning true and the transaction is made dirty.
    I am setting a transient attribute like this getNwOperVOIter().getCurrentRow().setAttribute("AcctNoTrans")....when I am editing a row.
    Can I get explicit handle at viewobjectimpl for this transient attribute??
    Regards,
    Praveen

  • Authentication for a work set or page

    Dear All,
    We have a requirement when the user clicks on benefits and payments it should ask for user ID and Password .
    How we can acieve the same. Please suggest us .
    Regards,
    Suman

    Hello Suman,
    You chould try the following steps
    select the JCO destination For benifits and payments
    There will be a set one Application JCO and the Other Metadata JCO.
    Select the Application JCO and edit it. In the logon method try deselecting Ticket to user id password.
    Im not sure whether this will work but i guess this is the only workaround.
    Hope this helps,
    Regards,
    Gaurav Modgil

  • Maintaining data of view objects in cache memory for repeated usage

    Hi,
         We are developing an application which is having around 800 viewobjects that will be used as LOV in different screens. Therefore, it is decided to create a separate project for all such LOV view objects and keep the same in shared scope so that the data can be made availabe across the application.
         The application also communicates with different database schemas based on the logged-in county. For a particular user, LOV view object LovView1 should get the data fetched from Schema1 whereas for user2, the same LovView1 should get the data from Schema2.
         For this, we have created n number of ApplicationModules like AM1, AM2 etc in the project each one being connected to different database. A base application module also has been created and all the county specific AMs extend this base AM. Also all the LOV view object instances are included in this base AM so that they will be available in the county specific AMs also.The entire project is made as an ADF Library jar and this base AM is utilized by other projects for mapping the LOV by attaching the library.
         At runtime, whenever a particular viewobject is accessed, the findViewObject() method of the baseAM has been overridden and the logic is built in such a way to get the logged in user's county code from a session variable and based on the county, the corresponding AM is communicated with and the view object is returned.
         The view objects of the LOV project is used as LOV as well as for doing some other backend processes. In such cases, the view object is obtained and necessary filter conditions are appended to the view criteria and is executed to get the filtered rowset.
    Now, my questions are,
    1. Is it enough to create the jar for the LOVProject and access the view objects from the same baseAM across the application?
    2. I wish to keep all the data in cache memory to avoid repeated DB hits for all the LOV view objects. How it can be achieved? To be more precise, consider two users user1 and user2 logging into the application with different county. When user1 access a LOV viewobject for the first time, data needs to be fetched from the DB, kept in application scoped cache memory and return the rowset. On subsequent calls to the viewobject, the data needs to be retreived from the cache and not from the DB. When user2 also access the same LOV viewobject, the same logic as explained for user1 should happen. How can I achieve this? Actually my doubt is when user2 access, will the data pertaining to user1 remains available in cache? If not, how to make it retain the data in cache?
    3. I also wish to append a particular where condition to a viewobject irrespective of other considerations like logged in county, existing view criteria etc.. How can I do this? A separate thread for this requirement has been posted in the forum Including additional where clause conditions to view criteria dynamically
    Kindly give me your suggessions.
    Thanks in advance.
    Regards.

    Hi Vijay,
    regarding your questions:
    1. What is the difference between "TimesTen In-Memory Database" and
    "In-Memory Database Cache" in terms of features and licensing model?
    ==> Product has just been renamed and integrated better with the Oracle database - Times-Ten == In-Memory-Cache-Database
    2. Is "In-Memory Database Cache" option integrated with Oracle 10g
    installable or a separate installable (i.e. TimesTen installable with only
    cache feature)?
    ==> Seperate Installation
    3. Is "In-Memory Database Cache" option same as that of "TimesTen Cache
    Connect to Oracle" option in TimesTen In-Memory Database?
    ==> Please have a look here: http://www.oracle.com/technology/products/timesten/quickstart/cc_qs_index.html
    This explains the differences.
    4. After integrating "In-Memory Database Cache" option with Oracle 10g, data
    access will happen only through Oracle sqlplus or OCI calls. Am I right here
    in making this statement?
    ==> Please see above mentioned papers
    5. Is it possible to cache the result set of a join query in "In-Memory
    Database Cache"?
    ==> Again ... ;-)
    Kind regards
    Mike

  • The operation is not allowed for result set type FORWARD_ONLY

    Hi,
    I am trying to use scroll insensitive resultset in following manner-
    Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);
    ResultSet rs = stmt.executeQuery("some sql here");
    rs.last();
    but the rs.last() throws this exception-
    com.sap.dbtech.jdbc.exceptions.SQLExceptionSapDB: The operation is not allowed for result set type FORWARD_ONLY.
         at com.sap.dbtech.jdbc.ResultSetSapDB.assertNotForwardOnly(ResultSetSapDB.java:2725)
         at com.sap.dbtech.jdbc.ResultSetSapDB.last(ResultSetSapDB.java:557)
    Database version: Kernel    7.5.0    Build 019-121-082-363
    Driver Version: MaxDB JDBC Driver, MySQL MaxDB, 7.6.0    Build 030-000-005-567
    This used to work with 7.5 version driver. Why this is failing with 7.6 driver, any clues?
    Thanks,
    Vinod

    Hi Vinod,
    due to performance improvement when using forward only cursor we changed the default for the resultset type from TYPE_SCROLL_SENSITIVE to TYPE_FORWARD_ONLY starting with JDBC driver version 7.6. So I guess the exception comes from a statement where you didn't set the resultset type while creating it. Please check if all of the statements that you want to be scrollable have set the correct resultset type.
    Regards,
    Marco

  • Digital Signature sign off for PM work order operations

    Hello Experts ,
    We are have a requirement for digital signature sign off for operation. I've done all the setting mentioned in SAP Help
    http://help.sap.com/erp2005_ehp_03/helpdata/EN/da/49d9c433ff4985b2484b7b911123cf/frameset.htm and SAP Note
    700495 - Digital Signature implementation by using signature tool.
    But still the Digital signature functionality is not working. Note 700495 give a sample program  DSIG_BOOKING_EX, do we need to have a similar program for operations as well or once the setting is done for operation sign off w.r.t order type and plant the digital signature will automatically work.
    Have any one worked on the same required. pls help.
    Thanks in adavance.

    Would you like to share the answer with us??
    PeteA

  • [Exchange-Online][EWS][c#][Windows 8.1] When creating appointment using impersonation "Set action is invalid for property" error occurs.

    I have an Outlook add-in that creates appointments to a load of Office 365 calendars. It used to work well but suddenly I have hit a problem.
    The basic calling code is
    Appointment appointment = new Appointment(exchangeService);
       appointment.Subject = subject;
       appointment.Body = body;
       appointment.Location = location;
       appointment.IsAllDayEvent = allDay;
       appointment.LegacyFreeBusyStatus = LegacyFreeBusyStatus.Busy;
       appointment.IsOnlineMeeting = false;
       appointment.Save(SendInvitationsMode.SendToNone);
    This still works fine on my own Office 365 mailbox but if I switch to another, using Impersonation, the Save line now throws the error "Set action is invalid for property."
    There does not seem to be a problem with impersonation. The line
    exchangeService.ImpersonatedUserId = new ImpersonatedUserId(ConnectingIdType.SmtpAddress, selectedUserEmail);
    runs OK and afterwards the exchangeService's ImpersonatedUserID gives the correct email address.
    If I look at the appointment object in the Watch window immediately after the line that creates it has run I can see that most of the properties have an entry like:
    appointment.AdjacentMeetingCount' threw an exception of type 'Microsoft.Exchange.WebServices.Data.ServiceObjectPropertyException'.
    Also, several properties including Subject are not listed in the expanded appointment object in the Watch window.
    However, entering appointments.Subject explicitly in the Watch window does give the correct result.
    I have used the floating watch to check the value of each property straight after it is set and each one is as expected.
    I am at a loss as to what to check next and would be grateful for all ideas.
    Mike VE

    Thanks for the reply Jason. I did as you suggested and found that it was the IsOnlineMeeting that caused the problem. Once that was commented out everything worked as expected. On checking I see that this property is ReadOnly for everyone except the
    organizer of the meeting. Clearly the Impersonate role is not regarded as the organiser.
    I don't think it is going to matter so long as the user in whose calendar the appointment is created has fully access to the appointment, which seems to be the case.
    Thanks for your help.
    Mike VE

  • I want to use Mac Mail for my work email address, which containts multiple outbound options (i.e. hr@, me@ etc). Is there a way to set up Mac Mail to have an account with multiple outbound addresses rather than adding in multiple accounts?

    I want to use Mac Mail for my work email address, which containts multiple outbound options (i.e. hr@, me@ etc). Is there a way to set up Mac Mail to have an account with multiple outbound addresses rather than adding in multiple accounts?

    This sounds like the age old problem with keychain & Safari. I don't know of a way to solve it without using something like 1Password.
    The iOS app has it's own built in browser, so it has more control over what gets autofilled. Safari on OS X has an 1Password extension that handles account selection & autofill etc.
    Keychain is great in principle, but it quickly falls down when you need tight integration with many ID's & different use cases (work, home etc).
    I'd suggest you submit feedback to Apple about your thoughts. I did so years ago about this issue & this is how far we have come (back to the point where me.com synced passwords) :^)
    http://apple.com/feedback/macosx.html
    Other tools like lastpass or keypassx may also help if you want to truly segregate password storage, but that doesn't fix autofill, the way around that issue is to dedicate one browser for work.

  • I have a new iPhone for work, set up on a new iTunes account (PC).  I was told i can associate it to my home iTunes account (iMac) but don't know how.  I want to save the work related apps as well.  Any advice?  Thanks

    I have a new iPhone for work, set up on a new iTunes account (PC).  I was told i can associate it to my home iTunes account (iMac) but don't know how.  I want to save the work related apps as well.  Any advice?  Thanks

    Thanks. I messed up with my husbands iphone because I was told the wrong thing. Now everytime I sync his phone it makes it look just like the other phone I had. Do you know how I can fix taht for his phone? Any settings I can turn off that will prevent all of my apps/contacts, etc from auto populating his phone?

  • Apple store worked great, now it keeps telling me that I need to verify payment info and my security code is invalid for my card... The card is current? What's going on?

    Apple store worked great, now it keeps telling me that I need to verify payment info and my security code is invalid for my card... The card is current? What's going on?

    Did you enter the last three digits on the back of the card for Visa or Master or the 4 digit # on the front of Amex?

  • Hi Has anyone had this error message from iCal?  The request for account "Work" failed.  The server responded with "502" to operation CalDAVAccountRefreshQueueableOperation.

    I keep getting this message whenever i am connected to iCal which is a tad annoying.
    The request for account “Work” failed.
    The server responded with
    “502”
    to operation CalDAVAccountRefreshQueueableOperation.
    Please help!
    pippilaing (NZ)

    What I found works best is to do the following:
    Quit iCal on you
    Go to iCloud.com and sign-in
    Create an event on the calendar
    Sign-out of iCloud.com
    Relaunch iCal
    It will take a few seconds for the calender to resync, but you should see the new event pop up on the calender. After that, hopefully all is well.

Maybe you are looking for