Refreshing a view object after data external change

Hi
I'm trying to refresh a viewobject based on a read-only query, the table data used on the query are updated by an other application
the problem that the view don't refresh its data from the database, it return always the same value
(but after leaving the page to another then getting back to my page the data is refreshed)
my code (periodically called by a poll):
vo.reset();
vo.setQueryMode(ViewObject.QUERY_MODE_SCAN_DATABASE_TABLES);
vo.setpIdUser(1);
vo.executeQuery();
if(vo.getRowCount()>0) {
r = (PosInstantaneRowImpl)vo.getCurrentRow(); //always just 1 row is returned
if(r.getIdtracking()!=null) {
val = r.getIdtracking();
System.out.println("Idtracking1: "+val); //print always the first value retrived when the page is loaded
i'm using JDev 11.1.1.2.0
database: mysql 5.2.11
ms windows 7
thanks for help.

the vo is generated via the an existing iterator on my page:
PosInstantaneImpl vo = (PosInstantaneImpl)iter.getViewObject();
i tried getting a new viewobject instance:
PosInstantaneImpl obj = (PosInstantaneImpl)app.findViewObject("PosInstantane1");
and executed the same code:
obj.setQueryMode(ViewObject.QUERY_MODE_SCAN_DATABASE_TABLES);
obj.setpIdUser(1);
obj.executeQuery();
if (obj.getRowCount() > 0) {
PosInstantaneRowImpl vr = (PosInstantaneRowImpl) obj.first();
System.out.println("Idtracking_ext: "+vr.getIdtracking());
the last code worked and gived the right data values, but the data of the vo from iterator still wrong!
Idtracking1: 590 //wrong value
Idtracking_ext: 591 //right value
Idtracking1: 590 //wrong value
Idtracking_ext: 592 //right value
any one have idea why this ? how can I refresh the vo generated from the iterator ? I need at the end to refresh a ritch table using the iterator.

Similar Messages

  • Drilling down on a Graph Panel component with a View Object as Data Source

    I am using a Graph panel attached to a View Object as the data source, to display a bar graph. I would like to support a double-click on
    a specific bar, to display the row(s) of data behind the bar. I can see in the BI Beans API reference a DrillRequesting event on the Graph class.
    Is this the correct event in which to place logic for this function? How can I trigger this event? How can I retrieve the component attributes
    (i.e. group, series, values), for the selected bar?
    Thanks in advance for the help!

    DrillRequesting event is used in association with BI Crosstab control.
    Did you try addMouseListener() method on the Graph in association
    with getDataSource() method ?.
    You may also want to try posting this query in the BI Bean forum.
    HTH,
    Sathish

  • How to pass UserID to the view object after authentication?

    Hi,
    I am developing an application using Oracle JHeadstart 10.1.3 Version 10.1.3.0.83
    I have a view where all clients' data are. But when a client logs in he/she should see only his/her data, he/she should not see other clients' data.
    So after logging how I can pass his/her UserID to the view? We are planning to use the OID for authentication. So when the client logs in with his/her user id, I want to pass that user id to the view so that the view query will return only the records associated with that client.
    Any help would be appreciated
    Thanks
    Syed

    Syed,
    Although not fully documented yet in the Devguide, 10.1.3 still ships with basically the same security code that we had in 10.1.2. I suggest reading the security section in Chapter 5 of the 10.1.2. Devguide to get an idea of how that would work. Basically, it boils down to setting a JhsUser object on the session that you can access in the Model through the JhsApplicationModuleImpl.getUser() method.
    Using the user in a whereclause could be done programmatically by altering the whereclause of a VO on the "executeQueryForCollection" method, but you could also use a bind variable and then bind it to the JhsUser object on the session through an EL expression like #{jhsUser.displayName}
    Hope this helps,
    Peter Ebell
    JHeadstart Team

  • (Automatic) Refresh of Cached object after insert/update

    Hi,
    (I am using Toplink 9.0.3 against an Oracle Database)
    I am inserting and updating records in the database through objects registered in a TopLink UnitOfWork. I happen to know that certain database columns will get a (changed) values because of Database triggers.
    Is it true that the only way to get these changed values reflected back to the TopLink cache is by explicitly executing a
    session.refreshObject();
    call for every object changed in the UnitOfWork?
    Is there no way to inform TopLink (for example through the descriptors for the relevant classes) that for certain classes after the insert/update an automatic synchronization with the database must be performed?
    I have not been able to find such a setting, but I may have overlooked it - I hope I did.
    Thanks for your help,
    Lucas Jellema (AMIS)

    In this case use a postMerge event -- it will get called after the merge of the cache and then you could update the object explicitly.
    Ultimately, the way to achieve the behavior you're looking for is events or refreshing.
    - Don

  • Querying a View Object after a Row has been inserted

    Hi All,
    I have a query as to whether something can be done or if I should be approaching my problem in a slightly different way.
    First an explanation of what I am trying to achieve:
    I have a header record that deals with a new user request. From one of the pages within the train one or more of several different ‘applications’ can be selected. When an ‘application’ is selected I am navigating to a new page, it queries the linesVO to see if any lines exist for that ‘application’, where they don’t it adds lines to the VO each representing ‘questions’ specific to that ‘application’. This works fine, however if I then come out of that page back into the train and then back into the same page specific for the same ‘application’ the initQuery is run and the lines I have just created are not found, it then tries to reinsert the question lines but will error as primary key validation fails. I do not want to commit after coming back from the lines page as the user has not specified a save, adding a save to the lines page would also cause the header to commit.
    Now the Question:
    Is there a way of ensuring that I can run my created method ‘initQuery’ which sets a where clause and calls ‘executeQuery’ will bring back lines that I have created in the VO and are held in cache? They must be held in cache else I would not be getting the error ‘Too many objects match the primary key’
    Any guidance on this matter would be most appreciated,
    Thanks
    Mike

    Unfortunately I do need to query the view again, each time the user clicks on a different ‘application’ in the train it will need to show only the lines in the view relating to that application. It is a bit like a master-detail except I want to show the detail lines on a separate page.
    I could have made each page separately but I am trying to make it dynamic so if a new application is added in the future I only have to add the details to the database tables.
    Thanks, Mike

  • JSP/BC4J app: How to get view object row data into a scriplet variable?

    I have a JSP application using BC4J data tags. Within a rowsetiterate tag, how can I get the data value of an attribute for the current row into a scriplet variable?
    Thanks,
    Steve

    Using the <jbo:Row> tag like this:
      <jbo:RowsetIterate .... >
        <%--
         | Establish a scriptable variable "curRow" for the current row
         +-->
        <jbo:Row id="curRow" action="current"/>
        <%
          String foo = (String)curRow.getAttribute("YourAttrName");
        %>

  • Refreshing Entity Objects after Altering the table

    Hi,
    My Entity Object is based on a table... and View Objects on the Entity Objects. Now if I alter the table (just changing the width of the column), that change is not visible on the Entity Object. Is there any way I can automatically refresh the Entity Objects after altering the table(only column width is changed).
    (Changes made to Entity Objects manually are reflected in the View Object correctly.)
    Regards
    Faiyaz

    'changing the width of the column' means changing the size of the column in the table description in the database. For e.g.. In the original table I had a column OIL_KEY NUMBER(6). Now I change the column to be of size 12 i.e. OIL_KEY NUMBER(12). This does not get refreshed in the Entity Object.

  • Null Pointer Exception after adding Transient attribute in View Object

    Hello Experts
    I am using Jdev 11.1.2.3. I have added a transient attribute in view object and set default value to another view object attribute via view accessor of view link between view objects. the value of expression is ItemMasterRO.Description, where ItemMasterRO is the name of view accessor define in the view link and Description is the name of attribute which is in other view object.
    Data is retrieving as per my requirements, but when i click on add record button in application module, it is throwing a  null pointer exception. Here is stack trace
    oracle.jbo.JboException: JBO-29000: Unexpected exception caught: java.lang.NullPointerException, msg=null
        at oracle.jbo.ExprEval.internalEvaluateGroovyScript(ExprEval.java:1218)
        at oracle.jbo.ExprEval.doEvaluate(ExprEval.java:1253)
        at oracle.jbo.ExprEval.evaluateForRow(ExprEval.java:1075)
        at oracle.jbo.server.AttributeDefImpl.evaluateTransientExpression(AttributeDefImpl.java:2132)
        at oracle.jbo.server.ViewRowStorage.getAttributeInternal(ViewRowStorage.java:1856)
        at oracle.jbo.server.ViewRowImpl.getAttributeValue(ViewRowImpl.java:1967)
        at oracle.jbo.server.ViewRowImpl.getAttributeInternal(ViewRowImpl.java:829)
        at oracle.jbo.server.ViewRowImpl.getAttrInvokeAccessor(ViewRowImpl.java:911)
        at oracle.jbo.server.ViewRowImpl.getAttribute(ViewRowImpl.java:859)
        at oracle.jbo.uicli.binding.JUCtrlValueBinding.internalGetAttributeValueFromRow(JUCtrlValueBinding.java:1213)
        at oracle.jbo.uicli.binding.JUCtrlValueBinding.getAttributeFromRow(JUCtrlValueBinding.java:764)
        at oracle.jbo.uicli.binding.JUCtrlValueBinding.getAttributeFromRow(JUCtrlValueBinding.java:792)
        at oracle.jbo.uicli.binding.JUCtrlAttrsBinding.updateValuesFromRow(JUCtrlAttrsBinding.java:145)
        at oracle.jbo.uicli.jui.JULabelBinding.updateValuesFromRow(JULabelBinding.java:114)
        at oracle.jbo.uicli.binding.JUIteratorBinding.updateValuesFromRows(JUIteratorBinding.java:349)
        at oracle.adf.model.binding.DCIteratorBinding.setupRSIstate(DCIteratorBinding.java:867)
        at oracle.adf.model.binding.DCIteratorBinding.refreshControlAndNotifyDCE(DCIteratorBinding.java:707)
        at oracle.adf.model.binding.DCIteratorBinding.refreshControl(DCIteratorBinding.java:676)
        at oracle.jbo.uicli.binding.JUIteratorBinding.refreshControl(JUIteratorBinding.java:485)
        at oracle.adf.model.binding.DCIteratorBinding.refresh(DCIteratorBinding.java:4555)
        at oracle.adf.model.binding.DCBindingContainer.refreshExecutables(DCBindingContainer.java:3542)
        at oracle.adf.model.binding.DCBindingContainer.internalRefreshControl(DCBindingContainer.java:3375)
        at oracle.adf.model.binding.DCBindingContainer.refreshControl(DCBindingContainer.java:2938)
        at oracle.jbo.jbotester.NavigationBar.doInsertAction(NavigationBar.java:143)
        at oracle.jbo.jbotester.NavigationBar.doAction(NavigationBar.java:110)
        at oracle.jbo.uicli.controls.JUNavigationBar$NavButton.actionPerformed(JUNavigationBar.java:118)
        at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
        at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
        at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
        at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
        at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
        at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:272)
        at java.awt.Component.processMouseEvent(Component.java:6289)
        at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
        at java.awt.Component.processEvent(Component.java:6054)
        at java.awt.Container.processEvent(Container.java:2041)
        at java.awt.Component.dispatchEventImpl(Component.java:4652)
        at java.awt.Container.dispatchEventImpl(Container.java:2099)
        at java.awt.Component.dispatchEvent(Component.java:4482)
        at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577)
        at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
        at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
        at java.awt.Container.dispatchEventImpl(Container.java:2085)
        at java.awt.Window.dispatchEventImpl(Window.java:2478)
        at java.awt.Component.dispatchEvent(Component.java:4482)
        at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:644)
        at java.awt.EventQueue.access$000(EventQueue.java:85)
        at java.awt.EventQueue$1.run(EventQueue.java:603)
        at java.awt.EventQueue$1.run(EventQueue.java:601)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
        at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98)
        at java.awt.EventQueue$2.run(EventQueue.java:617)
        at java.awt.EventQueue$2.run(EventQueue.java:615)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:614)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
    Caused by: java.lang.NullPointerException
        at org.codehaus.groovy.runtime.callsite.PogoGetPropertySite.acceptGetProperty(PogoGetPropertySite.java:32)
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callGetProperty(AbstractCallSite.java:237)
        at bc4j_com_syncreon_model_queries_SequenceItemContainerXrefVO_ItemDescription_null_gs.run(bc4j_com_syncreon_model_queries_SequenceItemContainerXrefVO_ItemDescription_null_gs.groovy:1)
        at oracle.jbo.ExprEval.internalEvaluateGroovyScript(ExprEval.java:1200)
        ... 62 more
    ## Detail 0 ##
    java.lang.NullPointerException
        at org.codehaus.groovy.runtime.callsite.PogoGetPropertySite.acceptGetProperty(PogoGetPropertySite.java:32)
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callGetProperty(AbstractCallSite.java:237)
        at bc4j_com_syncreon_model_queries_SequenceItemContainerXrefVO_ItemDescription_null_gs.run(bc4j_com_syncreon_model_queries_SequenceItemContainerXrefVO_ItemDescription_null_gs.groovy:1)
        at oracle.jbo.ExprEval.internalEvaluateGroovyScript(ExprEval.java:1200)
        at oracle.jbo.ExprEval.doEvaluate(ExprEval.java:1253)
        at oracle.jbo.ExprEval.evaluateForRow(ExprEval.java:1075)
        at oracle.jbo.server.AttributeDefImpl.evaluateTransientExpression(AttributeDefImpl.java:2132)
        at oracle.jbo.server.ViewRowStorage.getAttributeInternal(ViewRowStorage.java:1856)
        at oracle.jbo.server.ViewRowImpl.getAttributeValue(ViewRowImpl.java:1967)
        at oracle.jbo.server.ViewRowImpl.getAttributeInternal(ViewRowImpl.java:829)
        at oracle.jbo.server.ViewRowImpl.getAttrInvokeAccessor(ViewRowImpl.java:911)
        at oracle.jbo.server.ViewRowImpl.getAttribute(ViewRowImpl.java:859)
        at oracle.jbo.uicli.binding.JUCtrlValueBinding.internalGetAttributeValueFromRow(JUCtrlValueBinding.java:1213)
        at oracle.jbo.uicli.binding.JUCtrlValueBinding.getAttributeFromRow(JUCtrlValueBinding.java:764)
        at oracle.jbo.uicli.binding.JUCtrlValueBinding.getAttributeFromRow(JUCtrlValueBinding.java:792)
        at oracle.jbo.uicli.binding.JUCtrlAttrsBinding.updateValuesFromRow(JUCtrlAttrsBinding.java:145)
        at oracle.jbo.uicli.jui.JULabelBinding.updateValuesFromRow(JULabelBinding.java:114)
        at oracle.jbo.uicli.binding.JUIteratorBinding.updateValuesFromRows(JUIteratorBinding.java:349)
        at oracle.adf.model.binding.DCIteratorBinding.setupRSIstate(DCIteratorBinding.java:867)
        at oracle.adf.model.binding.DCIteratorBinding.refreshControlAndNotifyDCE(DCIteratorBinding.java:707)
        at oracle.adf.model.binding.DCIteratorBinding.refreshControl(DCIteratorBinding.java:676)
        at oracle.jbo.uicli.binding.JUIteratorBinding.refreshControl(JUIteratorBinding.java:485)
        at oracle.adf.model.binding.DCIteratorBinding.refresh(DCIteratorBinding.java:4555)
        at oracle.adf.model.binding.DCBindingContainer.refreshExecutables(DCBindingContainer.java:3542)
        at oracle.adf.model.binding.DCBindingContainer.internalRefreshControl(DCBindingContainer.java:3375)
        at oracle.adf.model.binding.DCBindingContainer.refreshControl(DCBindingContainer.java:2938)
        at oracle.jbo.jbotester.NavigationBar.doInsertAction(NavigationBar.java:143)
        at oracle.jbo.jbotester.NavigationBar.doAction(NavigationBar.java:110)
        at oracle.jbo.uicli.controls.JUNavigationBar$NavButton.actionPerformed(JUNavigationBar.java:118)
        at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
        at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
        at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
        at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
        at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
        at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:272)
        at java.awt.Component.processMouseEvent(Component.java:6289)
        at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
        at java.awt.Component.processEvent(Component.java:6054)
        at java.awt.Container.processEvent(Container.java:2041)
        at java.awt.Component.dispatchEventImpl(Component.java:4652)
        at java.awt.Container.dispatchEventImpl(Container.java:2099)
        at java.awt.Component.dispatchEvent(Component.java:4482)
        at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577)
        at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
        at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
        at java.awt.Container.dispatchEventImpl(Container.java:2085)
        at java.awt.Window.dispatchEventImpl(Window.java:2478)
        at java.awt.Component.dispatchEvent(Component.java:4482)
        at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:644)
        at java.awt.EventQueue.access$000(EventQueue.java:85)
        at java.awt.EventQueue$1.run(EventQueue.java:603)
        at java.awt.EventQueue$1.run(EventQueue.java:601)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
        at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98)
        at java.awt.EventQueue$2.run(EventQueue.java:617)
        at java.awt.EventQueue$2.run(EventQueue.java:615)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:614)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
    Please advice....
    Thanks

    Hi,
    Just the exception stack without any information like what JDev version, what expression you've used for the default value of the transient attribute etc., is not enough for us to help you.
    -Arun

  • Jdev 1013  ADF - View Object not bound - Refreshed page not showing ctrls

    I have a view object that i am using for input form on a page by exposing in a data control.
    When the form is submitted it does some db operation based on user input and comes back.
    My problem is when i enter the same page again for doing another operation of the same kind,
    i refresh this view object in one of the application module's methods.
    When the page shows up eventually, i am not finding the input fields on them.
    I guess there is some sort of binding issue to the view object here.
    The code in the application module's method to refresh the view module is as simple as:
    getVParams().clearCache();
    VParamsRowImpl row =
    (VParamsRowImpl )getVParams().createRow();
    row.setValue(100);
    getVParams().insertRow(row);
    Any idea why the bindings is not picking up the new row and connecting it to the form?
    By the way i am calling the same method when displaying the form for the first time it works. Only
    the subsequent calls to the form messes up.
    Any help will be much appreciated.

    Yes i am calling my custom method in application module. I understood that the same page bindings get invoked in two parts, once when the page is loaded and once when the values are submitted by the user. When the bindings are executed when the user is submitting the data from the page adfFacesContext.postback is true and at that i am not interested in creating the new row again by calling my method. Hence this condition in invokeAction. When i debug, the methods are getting called properly. Only when the page is rendered again, it is not picking up the new row.
    I am working around this now, by creating the row only once from the appmodule's method and then reusing the same created row in subsequent loadings by resetting the attributes alone.

  • How to refresh view object in doDML

    How can i refresh an view object in the doDML Method?

    How are you changing the key? - is it using the iterator or attribute value in bindings (or) directly thru the view object.
    if you are doing directly on the view object, on commit - you might have to refresh the iterator by calling executeQuery method on it.
    BindingContext bctx = BindingContext.getCurrent();
    BindingContainer bindings = bctx.getCurrentBindingsEntry();
    DCIteratorBinding dcIter = (DCIteratorBinding) bindings.get("DEPARTMENTS_VO1Iterator");
    if(dcIter != null){
    dcIter.executeQuery();
    }Thanks,
    Navaneeth

  • ExecuteWithParameter with Binds on several view objects

    I thought I knew how to do this, but it has been a month or two, and can't seem to get the syntax right. I would really appreciate some guidance on this.
    I'm using jdev 11 to create a basic page using ADF Faces. In the model, I have three seperate read only view objects based on queries I created in SQL Developer. I also have two lookup tables for use in LOVs to display names for IDs. In one of the views, I added two LOVs for id columns. I have one more lookup that displays name, id for Tech's.
    All three views have the same named bind variable - :TechID
    What I want is to have a single select box that displays the name column from Tech that will return the ID for TechID. When the user clicks the ExecuteWithParms, all three views should be refreshed and re-queried with the new bind value, and display the results. To see this work, I have been working with readonly tables, but eventually hope to use graphs for the three views.
    Here is the general layout that I am trying to achieve.
    Select One Choice (List of Techs with display set to name, and the return set to ID)
    ExecuteWithParams button. Currenly have table1, table2, table2 in the partialtriggers field.
    table1
    ViewObject1 that has a named bind of :TechID
    table2
    ViewObject2 that has a named bind of :TechID
    table3
    ViewObject3 that has a named bind of :TechID
    This seems like it should be easy to setup. Can this be done declaratively, or do I need code. If I need code, can I get a few hints?
    Is there an example that has something similar that I can gleen how to accomplish this?
    Thanks, Ken

    Timo et al,
    I still can't seem to get this to work. I finally worked through a problem with JDeveloper working (Feels like it has been April 1st for a week straight! (American Humor)). In trying to simplify this, I am asking if someone can create the following example use case based on the HR schema. I'm not asking for a paper, just 15 or so minutes from someone that is good at this to create a working example. Also, send me a zipped copy of the project, or make it available on your blog or other downloadable location.
    Thanks for any help with this to really understand how to get JDeveloper to work for me.
    Here are the specifics for a Highly desired example:
    This is based on HR schema.
    Read Only View Objects
    -- LOCATION_LKUP
    select
    (street_address || ' ' || city || ', ' || state_province || ' ' ||to_char(postal_code) || ' ' || country_id) as location_name,
    location_id
    from
    locations
    order by country_id, location_name;
    -- ViewObject DepartmentStuffView
    select *
    from departments
    where location_id = :LOC_ID;
    -- ViewObject EmployeeStuffView
    select * from employees
    where department_id in (select department_id
    from departments
    where location_id = :LOC_ID);
    -- Modify the AppService and ViewObjects to expose Java code to
    -- modify the (name)Impl.java file
    AppService Code
    public void updateViews(String locationID) {
         // Get a reference to the ViewObjects
    DepartmentStuffView vo1 = (DepartmentStuffView) getDepartmentStuffView1();
    EmployeeStuffView vo2 = (EmployeeStuffView) getEmployeeStuffView1();
         // Now have each view object requery itself with the new parameter
    vo1.updatewithParam(locationID);
    vo2.updatewithParam(locationID);
    ViewObject Code
    -- In both ViewObjects
    -- (DepartmentStuffViewImpl.java and EmployeeStuffViewImpl.java),
    -- add the following code at the bottom
    public void updatewithParam(String locationID) {
         setTechID(locationID);
         executeQuery();
    Layout:
    Location Name: ComboBox <== Displays LOCATION_NAME, Returns LOCAION_ID
    <Run Report> <== Button to run the process
    Table1
    The view object DepartmentmentStuffView
    Table2
    The View Object EmployeeStuffView
    Expected Behavior:
    Change the location in combo box and press the run report button.
    The data in both views with bind variables get updated.
    Extension:
    Page can have search with multiple filters. The AppService can control
    which views get updated with which values depending on selections. Common
    use case.
    Thanks so much, Ken

  • View Link on two programmatic view objects

    Hello,
    I use Build JDEVADF_11.1.1.1.0_GENERIC_090615.0017.5407
    I have two programmatic View Objects with data from other sources (an ArrayList in my example).
    Now I would like to create a View Link on it. How can I do this?
    I'm quite new on Java and ADF...
    I know it is possible because I already found Steve's example 132 here [http://blogs.oracle.com/smuenchadf/examples/|http://blogs.oracle.com/smuenchadf/examples/]
    But could somebody create a simple example based on my example classes below (which is understandable for a newbie like me ;-) ?
    Has been asked already here, but I did not found a solution as yet.
    Error with view link and ADF table Tree
    This is my example code for the view objects:
    Employee.java:
    private Number empno;
    private String ename;
    private Number dept;
    with getters and setters...
    Department.java
    private Number deptno;
    private String dname;
    with getters and setters...
    public class StaticDataDepartmentsImpl extends ViewObjectImpl {
    int rows = -1;
    private List<Department> departments = new ArrayList<Department>();
    protected void executeQueryForCollection(Object rowset, Object[] params,
    int noUserParams) {
    // Initialize our fetch position for the query collection
    setFetchPos(rowset, 0);
    super.executeQueryForCollection(rowset, params, noUserParams);
    // Help the hasNext() method know if there are more rows to fetch or not
    protected boolean hasNextForCollection(Object rowset) {
    return getFetchPos(rowset) < rows;
    // Create and populate the "next" row in the rowset when needed
    protected ViewRowImpl createRowFromResultSet(Object rowset,ResultSet rs) {
    ViewRowImpl r = createNewRowForCollection(rowset);
    int pos = getFetchPos(rowset);
    populateAttributeForRow(r, 0, departments.get(pos).getDeptno());
    populateAttributeForRow(r, 1, departments.get(pos).getDname());
    setFetchPos(rowset, pos + 1);
    return r;
    // When created, initialize static data and remove trace of any SQL query
    protected void create() {
    super.create();
    // Setup string arrays of codes and values from VO custom properties
    initializeStaticData();
    rows = (departments != null) ? departments.size() : 0;
    // Wipe out all traces of a query for this VO
    getViewDef().setQuery(null);
    getViewDef().setSelectClause(null);
    setQuery(null);
    // Return the estimatedRowCount of the collection
    public long getQueryHitCount(ViewRowSetImpl viewRowSet) {
    return rows;
    // Subclasses override this to initialize their static data
    protected void initializeStaticData() {
    Department d1 = new Department();
    d1.setDeptno(new Number(10));
    d1.setDname("IT");
    Department d2 = new Department();
    d2.setDeptno(new Number(20));
    d2.setDname("HR");
    departments.add(d1);
    departments.add(d2);
    // Store the current fetch position in the user data context
    private void setFetchPos(Object rowset, int pos) {
    if (pos == rows) {
    setFetchCompleteForCollection(rowset, true);
    setUserDataForCollection(rowset, new Integer(pos));
    // Get the current fetch position from the user data context
    private int getFetchPos(Object rowset) {
    return ((Integer)getUserDataForCollection(rowset)).intValue();
    public class StaticDataEmployeesImpl extends ViewObjectImpl {
    int rows = -1;
    private List<Employee> employees = new ArrayList<Employee>();
    protected void executeQueryForCollection(Object rowset, Object[] params,
    int noUserParams) {
    // Initialize our fetch position for the query collection
    setFetchPos(rowset, 0);
    System.out.println("in executeQueryForCollection");
    super.executeQueryForCollection(rowset, params, noUserParams);
    // Help the hasNext() method know if there are more rows to fetch or not
    protected boolean hasNextForCollection(Object rowset) {
    System.out.println("in hasNextForCollection. Rows:" + rows);
    return getFetchPos(rowset) < rows;
    // Create and populate the "next" row in the rowset when needed
    protected ViewRowImpl createRowFromResultSet(Object rowset,ResultSet rs) {
    ViewRowImpl r = createNewRowForCollection(rowset);
    int pos = getFetchPos(rowset);
    System.out.println("in createRowFromResultSet. Pos=" + pos);
    populateAttributeForRow(r, 0, employees.get(pos).getEmpno());
    populateAttributeForRow(r, 1, employees.get(pos).getEname());
    populateAttributeForRow(r, 2, employees.get(pos).getDept());
    setFetchPos(rowset, pos + 1);
    return r;
    // When created, initialize static data and remove trace of any SQL query
    protected void create() {
    super.create();
    // Setup string arrays of codes and values from VO custom properties
    initializeStaticData();
    rows = (employees != null) ? employees.size() : 0;
    System.out.println("in create(). Rows=" + rows);
    // Wipe out all traces of a query for this VO
    getViewDef().setQuery(null);
    getViewDef().setSelectClause(null);
    setQuery(null);
    // Return the estimatedRowCount of the collection
    public long getQueryHitCount(ViewRowSetImpl viewRowSet) {
    return rows;
    // Subclasses override this to initialize their static data
    protected void initializeStaticData() {
    Employee e1 = new Employee();
    e1.setEmpno(new Number(2333));
    e1.setEname("Emp1");
    e1.setDept(new Number(10));
    Employee e2 = new Employee();
    e2.setEmpno(new Number(1199));
    e2.setEname("Emp2");
    e2.setDept(new Number(20));
    Employee e3 = new Employee();
    e3.setEmpno(new Number(3433));
    e3.setEname("Emp3");
    e3.setDept(new Number(10));
    Employee e4 = new Employee();
    e4.setEmpno(new Number(5599));
    e4.setEname("Emp4");
    e4.setDept(new Number(20));
    Employee e5 = new Employee();
    e5.setEmpno(new Number(5676));
    e5.setEname("Emp5");
    e5.setDept(new Number(10));
    Employee e6 = new Employee();
    e6.setEmpno(new Number(7867));
    e6.setEname("Emp6");
    e6.setDept(new Number(20));
    employees.add(e1);
    employees.add(e2);
    employees.add(e3);
    employees.add(e4);
    employees.add(e5);
    employees.add(e6);
    // Store the current fetch position in the user data context
    private void setFetchPos(Object rowset, int pos) {
    if (pos == rows) {
    setFetchCompleteForCollection(rowset, true);
    setUserDataForCollection(rowset, new Integer(pos));
    // Get the current fetch position from the user data context
    private int getFetchPos(Object rowset) {
    return ((Integer)getUserDataForCollection(rowset)).intValue();
    Who can help?
    Thnx in advance!
    Rolf

    Rolf,
    I guess when we try to do it for you, we end up with almost the sample code provided by Steve Muench.
    So there from my point of view it doesn't make sense to do it all over.
    Take some time and study the sample code, run it without changes and after that try some changes which suits your use case better.
    If you don't understand what's going on in the sample post the question here and we try to help you.
    Timo

  • Oracle View causes stale data

    I noticed my List page displays stale data after Updates if my list select is based on an Oracle View object, whereas if I change the select to go directly at the Table then the list is accurate.  For example, say I drill-down on record 1 in the list and then edit the Description...next I Save the edit and the UI returns to the List page.  But, the List page still shows the "old" Description.  If I drill-down again, I see the "updated" Description (or if I connect to the db using another client I have verified the update was indeed successful).
    So, why would using an Oracle View have this negative behavior and is there a way to correct this...since using Views are considered a Best Practice.  Here's the query:
    <cfquery  datasource="BIDW_QDM" name="listDS">select * from v_opn_incdt_tckt_jh363x</cfquery><cfquery 
    dbtype="query" name="listQ">select * from listDS</cfquery>
    <cfoutput 
    query="listQ">
    Thanks,
    J

    Thanks, I found the problem...it was a pilot error.  The View was NOT pointed to the same table as the update .  Could you please have a peek at my other question logged the same day as this one?

  • Clearing a View Object

    Hi, I'm currently using an OracleStatement to do a custom query from the database and then copying that data over to a View Object. Sometimes when I do a set on the ViewRowImpl, I get the "Too many objects match the primary key oracle.jbo.Key[62 ]." I think this is because the View Object has somehow cached a previous version of that row in the JVM.
    I am trying to clear the View Object with the following code but it doesn't always work. Sometimes, when I populate the View object with a new row that I know isn't in the VO it will clear everything but this doesn't happen consistently. Any ideas?
    OAViewObject docVO = (OAViewObject)getDocumentVO1();
    // OAViewObject docVO = new DocumentVOImpl();
    // docVO.setPassivationEnabled(false);
    // docVO.setMaxFetchSize(0);
    // docVO.clearCache();
    // delete everything
    RowSetIterator delRSI = docVO.createRowSetIterator("delete");
    delRSI.setRangeStart(0);
    while(delRSI.hasNext())
    DocumentVORowImpl row = (DocumentVORowImpl)delRSI.next();
    row.refresh(Row.REFRESH_WITH_DB_FORGET_CHANGES);
    delRSI.closeRowSetIterator();
    // for some reason if we include the isPrepared check it doesn't clear
    // the VO - disable it for now
    // if(!docVO.isPreparedForExecution())
    docVO.setWhereClause("1=0");
    docVO.executeQuery();
    // }

    Hi Dave,
    I am trying to do the same thing. Were you ever successful in refreshing your view object?
    Thanks,
    Joyce

  • Extra View Objects Generated?

    I've generated Application Module containing view objects and links. I've got generated four view objects accesors: get<vo>, get<vo>1, get<vo>2 and get<vo>3, but in my project I do not see four view objects, but one <vo>. What happened?
    I use view objects in custom application module methods. When working with <vo> everything is fine, except cache refresh. View objects for other entity objects are working good, including refresing cache data.
    Any idea?

    Hi Djorje,
    GLinijaViewImpl is a class, and like most Java classes, it can have particular instances. An app module can contain many instances of the same subclass of ViewObjectImpl, just as a panel can contain many instances of the same subclass of javax.swing.JComponent (e.g., many JButtons).
    One reason you might want many instances of GLinijaViewImpl is that you might want them to play different roles in your data model. You might, for example, want GLinijaViewImpl1 to be unrestricted (that is, to execute its query independently) and want GLinijaViewImpl2 to act as a detail to some master query (that is, only return detail rows to whatever row is current in the master query).
    What I suggest:
    1. Re-enter the application module wizard by right-clicking your app module and chosing edit.
    2. Select the Data Model tab.
    3. Look at the Data Model tree. It will have all of these instances of the view object in it. I don't know how they got there unintentionally; you might have clicked the > button too many times.
    4. You can fix this by selecting the ones you don't want and clicking the < button.
    Hope this helps.
    Best,
    Avrom
    P.S. For more on the data model:
    1. Choose Help | Help Topics.
    2. Navigate to
    Developing Business Components
    --Working With View Objects, View Links, Application Modules, and Clients
    +----Understanding View Objects, View Links, and Application Modules
    +------What is an Application Module
    Look particularly at the section, "About Application Modules, View Objects, and Data Models."
    null

Maybe you are looking for