Iterating through View Object RowIterator Bug.

I use this code to loop through the rows of a view object (As described in javadoc of RowIteratior).
public String checkIterations() {
String res = "Iterated through : ";
RowIterator view = this.getDepartmentsView1();
view.reset();
Row row;
while ((row = view.next()) != null) {
System.out.println("rownum: " + row.getAttribute("RowNum"));
res += row.getAttribute("RowNum") + " ";
return res;
Yet this code never goes through the first row if the executequery has been performed for view object.
details:
[http://adfbugs.blogspot.com/2009/07/iterating-through-view-object.html]
Is this a bug?
Edited by: mkonio on Jul 28, 2009 11:41 PM

Thanks Andrejus and Steve.
Its a development bug
problem and solution described in:
Fusion Developer's Guide for Oracle ADF
9.7.6 What You May Need to Know About Programmatic Row Set Iteration

Similar Messages

  • Very slow performance when scrolling through view object

    Dear reader,
    I've encountered the following problem (JDeveloper 9.03.2) I have a (predefined) ViewObject on top of a table, which contains ca. 3000 records.
    The user is allowed to choose a record (for instance through a JUNavigationBar), as soon as 'last' record is clicked in the navigation bar, it takes minutes(!) before it is actually shown. It seems it is building up the entire ViewObject (in memory) with all the records initialized, until it finally reaches the last record. The same thing happens if I manually call:
    vo.setRangeStart(3000), again it takes several minutes. The range size itself is 10. A call to vo.last() has the same effect as well.
    Am I doing something wrong? And if so what? And if this is normal behavior, what can I do to improve the performance? It is impossible to work like this... Thank you for your time!
    Regards Martijn

    Need suggestions...
    I have a jclient application that at one points does a batch download of data ~5k rows. Before I iterate through the records I call the setforwardOnly on the view object as well as its row set...
    so something like
    vo.getRowSet().setForwardOnly(true);
    vo.setForwardOnly(true);
    I only have read only access to these databases so I can't create temp tables on the database and I don't have any other database to point bc4j to to save the transaction information.
    Is there a way to force it to use a file or anything else?
    I don't want to turn off cacheing all together since there might be a case where user might accidently select a huge number of records to d/l.
    I'm using jdev 9.0.3.2.

  • Iterating through master view objects and child view objects in same page

    I am working on a project using ADF UIX and Business Components.
    I have an application module with two view objects one the master view object and the second the detail object. They are related via a view link.
    I would like to iterate through the master view objects displaying a customer name as bold text and then below each customer name I'd like to display the detail records in a table via the detail view object i.e. a seprate table for each customer.
    Is this possible - I haven't had much luck!?
    Thanks in advance.

    That's because
    $(".ms-vb2 a").
    is bringing back all the pieces that have that class with an anchor on the whole page, not just the ones in the .ms-wpContentDivSpace
    I don't know the exact syntax, but I think you need to iterate through all the '.ms_vb2 a' items as well - there are multiple ones, and do something like this inside your other grouping
    $(".ms-vb2 a").each(function(index) {
        var val=$(this).html();
       var val2=val.replace(/_/g," ")
       $(this).html(val2);
    That's not quite right but maybe that will help.
    Robin

  • Problem with 2 View Objects based on One Entity -Probably a Bug in ADF BC

    Hi
    I am using JDeveloper 10.1.3(SU5) and adf faces and ADF BC and to explain my problem I use HR schema.
    First, I created 2 view objects based on countries table named as TestView1 and TestView2. I set TestView1 query where clause to region_id=1 and TestView2 query where clause to region_id!=1 in the view object editor and then I created 2 separated form on these 2 view objects by dragging and dropping from data control palette.
    Now when I insert a record in the form based on TestView1 with region_id set to 1 and commit the record and go to the next form I can see the record in the second form which is completely wrong since it is against the where clause statement of the second form.
    I am really confused and the situation is very wired and it seems to me something like bug in adf bc.Am I right.Is there any work around or solution for solving this problem.
    Any help would be highly appreciated.
    Best Regards,
    Navid

    Dear Frank,
    Thank you very much for your quick response.
    Reading your helpful comments now I have some questions:
    1- I have commited the record in the database so shouldn't the query of view objects be re-queried?
    2- We try to use ClearVOCaches (entity_name,false) in afterCommit of the base entity object but unfortunately it does not work correctly. after that,We got root app module and used findViewObject method to find all the view of that entity (we have found them by using name not automaticlly) and called executeQuery of all views. From my point of view it has 2 big disadvantages. First suppose that this entity is an important entity and 4 or 5 viow objects are based on it. Now, For inserting one record we should re-execute 4 or 5 view which I think makes some performance issues. Besides, If during the development one programmer add a new view object based on this entity and don't add the executeQuery in the afterCommit for this view, again we have the same problem. Isn't there at least a way that automatically refresh all related view objects however the performance issue still exists.
    3- You mentioned that this issue is handled in the developer guide. Could you kindly give me a refrence which developer guide you mean and which section I should read to overcome this problem.(I have ADF Developer's Guide for Forms/4GL Developer's Guide , however I search for clearVOCaches and surprisingly nothing was found!!!)
    4- Could you please give me some hints that from your point of view what is the best method to solve this problem with minimum performance effect.
    Any comment would be of some great help.
    Thanks in advance,
    Navid

  • Possible bug when creating multiple detail view objects

    using jdev 11.1.1.0.0 to build jsf/adf applications. I wanted to report what seems like a bug in 11g. I have a parent table which has two child tables. After creating the appropriate entities, associations, views, and view links, the app module looks like this:
    MasterView
    --DetailView1
    --DetailView2
    The two detail view objects are on the same level, they are both direct children of the Master view.
    Here's what's happening:
    1) I create the master entity/view objects (MasterView)
    2) I create one of the detail entity/view objects (DetailView1).
    3) I create the association and view link to establish relationship between MasterView and DetailView1. Everything works fine.
    4) I create the entity/view objects for second detail view (DetailView2)
    5) When I attempt to create a second view link (based off an association) to establish the relationship between MasterView and DetailView2, the query clauses of the Create View Link wizard (screens 4 and 5) do not get created properly. I finish the wizard and save. Not only does this view link not get created properly, but in the process the query clauses that were defined in the first view link between MasterView and DetailView1 are wiped out. This will break any coordination between master and detail views in both the app module tester and runtime. Has anyone seen this problem?

    fyi, it looks like this issue has been resolved with jdev 11.1.1.0.2 (Update 2)

  • Changing the Updatable property of a View Object Attribute through code

    Hi,
    Is there a way to set the "Updatable" property of an attribute in a view object through code ?
    I checked the API docs for the AttributeDef class but there is no method to set this. there is a constant (UPDATEABLE_WHILE_NEW) which gives the current value.
    My requirements in short - I have a ADF editable Table. Based on a flag whether it is SET or NOT, i need to make a particular column such that the inputTextBox on this column must appear for only the new rows inserted into the table. For all the existing rows users should not be allowed to edit values on this column.
    I know this can be controlled with the UPDATABLE property on the attribute in the view object by setting the value as "WHILE  NEW".
    Now i need to control this through code at runtime.
    Please let me know on ow to do this.
    JDev version: 11.1.2.3
    Thanks.

    the method you are looking for is available in the AttributeDefImpl class which you can get from the EntityImpl like
    this.mDefinitionObject.getAttributeDefImpl("YOUR_ATTRIBUTE_NAME").setUpdateableFlag(AttributeDef.UPDATEABLE_WHILE_NEW);
    Timo

  • Issue with ADF Table bound to a View Object Iterator??

    Can anyone say what would prevent an ADF table bound to a View Object Iterator from displaying all the records retrieved by the View Object Query?
    I ran the query directly from sqlplus and it returned 21 rows, However when i use the same exact query in my view object and display the result in a ADF table, only 10 rows are retrieved and displayed in the table ?
    Help .. Please ???

    The ADF table is actually set to use 'Include Range Navigation' and to display 20 rows each time. However, only a 10 rows are retrieved and displayed and the other 10 rows are displayed as blanks with only the Table selection radio buttons in the Select Column.
    e.g.
    Select Data1 Data 2
    o xxxxxx xxxxxx
    o xxxxxx xxxxxx
    o
    o
    o
    o
    The four 'o' are blanks even though there is data to be displayed.

  • Accessing setters in parent view object through view link

    Hi,
    I want to access the setters in a parent view object from a child view object through the view link. I have not been able to find an example, can someone point me to one? This is possible isn't it?
    Thanks,
    Jim

    Hi,
    have a look at the developer guide, it has one
    http://download-uk.oracle.com/docs/html/B25947_01/toc.htm
    Frank

  • DOC BUG: 9.0.3.1 View Object Wizard and a Question

    First the question: What is the Passivate property for in the View Object Wizard's Attribute Settings page?
    Related Doc Bugs 9.0.3.1
    Topic: Define New View Attribute Dialog
    (click Help button in New Attribute dialog when creating a view object attribute)
    Problems: The description for the "Attribute" property is "foo"; Descrimator, Updateable, and Queriable have single letter descriptions. Key Attribute and Passivate are not listed.
    Topic: View Object Wizard - Attribute Settings Page
    (click Help button in Attribute Settings page in View Object Wizard)
    Problems: Query Column Type and Passivate are not listed. Attribute Settings column lists properties in a strange order (not a bug).
    Peter Koletzke

    Peter,
    I've logged doc bug 2814172: BC4J GLOSSARY SHOULD HAVE ENTRIES FOR PASSIVATE AND ACTIVATE.
    For more information, you could read the "About Application Module Pooling" topic in the online documentation. Passivation is what happens when the application module's state is saved to the database - and activation happens when an application module instance retrieves passivated state from the database.
    Thanks
    Blaise

  • Af:table is not showing records until doing refresh of the view object iter

    Hi Experts,
    I am using JDeveloper 11.1.1.4 and i have a page whhich shows records of a particular read only view object as an af:table. When i run the page at first it is not showing any data at all . But there are 2 records when i run the query of that read only view object.In my page there is a link called "Refresh" which calls the "Execute" operation of the view iterator of my view object. When i click this link the table shows two records.Why the table does not show records once wehn the page is rendered?
    Please help me.

    The following is the code that shows the panel collection in my page.
    <af:panelCollection id="pc1" featuresOff="freeze, wrap"styleClass="NewStyle">
    <f:facet name="secondaryToolbar">
    <af:toolbar id="t1" styleClass="Secondary">
    *<af:query id="qryId1" headerText="Search" disclosed="false"*
    *value="#{bindings.salesInvoiceAuthorisationCriteriaWaitOnlyQuery.queryDescriptor}"*
    *model="#{bindings.salesInvoiceAuthorisationCriteriaWaitOnlyQuery.queryModel}"*
    *queryListener="#{criteria.processQueryForSalesInvoice}"*
    *queryOperationListener="#{bindings.salesInvoiceAuthorisationCriteriaWaitOnlyQuery.processQueryOperation}"*
    *displayMode="compact"*
    *saveQueryMode="readOnly" maxColumns="2"*
    *modeChangeVisible="false" styleClass="Minimal"*
    *conjunctionReadOnly="true"*
    *resultComponentId="::t2"/>*
    </af:toolbar>
    </f:facet>
    <af:table value="#{bindings.salesInvoiceAuthorisation1.collectionModel}"
    var="row"
    rows="#{bindings.salesInvoiceAuthorisation1.rangeSize}"
    emptyText="#{bindings.salesInvoiceAuthorisation1.viewable ? 'No data to display.' : 'Access Denied.'}"
    fetchSize="#{bindings.salesInvoiceAuthorisation1.rangeSize}"
    rowBandingInterval="0"
    filterModel="#{bindings.salesInvoiceAuthorisation1Query.queryDescriptor}"
    queryListener="#{bindings.salesInvoiceAuthorisation1Query.processQuery}"
    filterVisible="true" varStatus="vs"
    selectedRowKeys="#{bindings.salesInvoiceAuthorisation1.collectionModel.selectedRow}"
    selectionListener="#{bindings.salesInvoiceAuthorisation1.collectionModel.makeCurrent}"
    rowSelection="none" id="t2"
    columnStretching="column:accountNameColumn"
    binding="#{processDocuments.invoiceTable}"
    contentDelivery="immediate"
    partialTriggers="::c111 selectToPost ::qryId1"
    styleClass="newTableStyle" autoHeightRows="9">
    <af:column filterable="false" sortable="false"
    headerText="#{bindings.DocumentAuthorisationView1.hints.ToPost.label}"
    id="c18" align="center"
    styleClass="#{row.bindings.ToPost.inputValue ? 'RowSelected' : ''}"
    width="103">
    <af:selectBooleanCheckbox id="selectToPost"
    value="#{row.bindings.ToPost.inputValue}"
    autoSubmit="true"/>
    </af:column>
    <af:column sortProperty="DocumentName" filterable="true"
    sortable="true"
    headerText="#{bindings.salesInvoiceAuthorisation1.hints.DocumentName.label}"
    id="c11"
    styleClass="#{row.bindings.ToPost.inputValue ? 'RowSelected' : ''}"
    width="107" filterFeatures="caseInsensitive">
    <af:outputText value="#{row.DocumentName}" id="ot1"/>
    </af:column>
    <af:column sortProperty="ExternalReference" filterable="true"
    sortable="true"
    headerText="#{bindings.salesInvoiceAuthorisation1.hints.ExternalReference.label}"
    id="c10"
    styleClass="#{row.bindings.ToPost.inputValue ? 'RowSelected' : ''}"
    width="105" filterFeatures="caseInsensitive">
    <af:outputText value="#{row.ExternalReference}" id="ot8"/>
    </af:column>
    <af:column sortProperty="DocumentCategory" filterable="true"
    sortable="true"
    headerText="#{bindings.salesInvoiceAuthorisation1.hints.DocumentCategory.label}"
    id="c9"
    styleClass="#{row.bindings.ToPost.inputValue ? 'RowSelected' : ''}"
    width="105" filterFeatures="caseInsensitive">
    <af:outputText value="#{row.DocumentCategory}" id="ot11"/>
    </af:column>
    <af:column sortProperty="CrDr" filterable="true"
    sortable="true"
    headerText="#{bindings.salesInvoiceAuthorisation1.hints.CrDr.label}"
    id="c4"
    styleClass="#{row.bindings.ToPost.inputValue ? 'RowSelected' : ''}"
    width="52" align="right">
    <af:outputText value="#{row.CrDr}" id="ot9">
    <af:convertNumber groupingUsed="false"
    pattern="#{bindings.salesInvoiceAuthorisation1.hints.CrDr.format}"/>
    </af:outputText>
    </af:column>
    <af:column sortProperty="BaseDate" filterable="true"
    sortable="true"
    headerText="#{bindings.salesInvoiceAuthorisation1.hints.BaseDate.label}"
    id="c8"
    styleClass="#{row.bindings.ToPost.inputValue ? 'RowSelected' : ''}">
    <f:facet name="filter">
    <af:inputDate value="#{vs.filterCriteria.BaseDate}"
    id="id1" contentStyle="text-transform:uppercase;">
    <af:convertDateTime pattern="#{bindings.salesInvoiceAuthorisation1.hints.BaseDate.format}"/>
    </af:inputDate>
    </f:facet>
    <af:inputDate value="#{row.BaseDate}" id="ot6" contentStyle="text-transform:uppercase;">
    <af:convertDateTime pattern="#{bindings.salesInvoiceAuthorisation1.hints.BaseDate.format}"/>
    </af:inputDate>
    </af:column>
    <af:column sortProperty="ExternalAccountCode"
    filterable="true" sortable="true"
    headerText="#{bindings.salesInvoiceAuthorisation1.hints.ExternalAccountCode.label}"
    id="c6"
    styleClass="#{row.bindings.ToPost.inputValue ? 'RowSelected' : ''}"
    filterFeatures="caseInsensitive" visible="false">
    <af:outputText value="#{row.ExternalAccountCode}" id="ot3"/>
    </af:column>
    <af:column sortProperty="AccountName" filterable="true"
    sortable="true"
    headerText="#{bindings.salesInvoiceAuthorisation1.hints.AccountName.label}"
    id="accountNameColumn"
    styleClass="#{row.bindings.ToPost.inputValue ? 'RowSelected' : ''}"
    filterFeatures="caseInsensitive">
    <af:outputText value="#{row.AccountName}" id="ot4"/>
    </af:column>
    </af:table>
    </af:panelCollection>
    Edited by: Priya on Nov 22, 2011 12:22 AM

  • BUG: Wrong column name in View Object

    Hello,
    I've had this happen several times to me. I added an Entity Object to a View Object in the VO Wizard. I then went to the "Query" section and hit "Test" to test the SQL code generated by the VO Wizard. The test failed because the wizard had added an equality test (table1.col1 = table2.col2) to the WHERE part which used the wrong table name.
    It is possible to manually fix this by putting the correct table name in the query, but you'd have to do this every time you make a change to the View Object.
    What I did was to rebuild the View Object from scratch, and this time it correctly generated the SQL query. I was able to add some more Entity Objects, but then it happened again. This is really irritating because my View Object is fairly complex and it takes quite some time to remake it.
    I can't give instructions on how to reproduce this because it only happens every so often. It would save a lot of frustration if someone could fix it though.
    Hariolf

    Hi Hariolf,
    I was able to build this scenario and test the query with success. Here is the sql for the view object I created
    from the following entities:
    RootEO one to many association with Entity01
    with Entity02
    with Entity03
    Entity01 one to many association with Entity04
    All objects are included in the view object, here is the resulting generated sql:
    SELECT RootEO.ROOTID,
    RootEO.ATTR,
    Entity01.EO1ID,
    Entity01.ROOTID AS ROOTID1,
    Entity04.EO4ID,
    Entity04.ATTR AS ATTR1,
    Entity02.EO2ID,
    Entity02.ROOTID AS ROOTID2,
    Entity03.EO3ID,
    Entity03.ROOTID AS ROOTID3
    FROM ROOTEO RootEO, EO1 Entity01, ENTITY04 Entity04, ENTITY02 Entity02, ENTITY03 Entity03
    WHERE (((RootEO.ROOTID = Entity01.ROOTID)AND (Entity01.EO1ID = Entity04.ATTR))AND
    (RootEO.ROOTID = Entity02.ROOTID))AND (RootEO.ROOTID = Entity03.ROOTID)
    Let me know if I need to retest using a different scenario. Also, what version of jdeveloper are you using?
    Amy

  • Questions on ADF View Objects, Links and Iterators

    I have a number of questions regarding using ViewObjects in applications where there are alot of relationships between tables.
    First, lets say that I have ViewObject SomeView that was added to the App Module (AM) as VO1. And because it has a number of "detail" records that have to be iterated through in a "report like" view it has those other VO's added under it as "children" in the AM.
    So I have
    VO1 (an instance of SomeView)
    --> VO2 (an instance of some other view)
    --> VO3 (an instance of some other view)
    that is used on pages where only a single VO1 is shown at a time.
    Now because I had another page I wanted to make that had a listing of all SomeView objects. Some of the fields in SomeView are foreign keys to records in VO2 and VO3 and while I don't want to show all the fields from VO2 and VO3, I do want to show a name field from each rather than just the foreign key.
    My experience (though I've never read this anywhere) tells me that when doing a "table" that is a list of rows from a VO, you can't display info from the child VO's because the child VO's are on whatever record corresponds to the "currentRow" in the parent VO and just displaying the rows in a rangeSet doesn't make each the "currentRow" so even we display 10 records in a for loop, the "currentRow" is just one, and the child VO's iterators aren't moved as we go through the for loop. (Can someone confirm if I am correct on this conclusion????)
    So the only way I know of to show some field from a related table in each row is to make the VO have the entity objects from the related tables be part of the view as references. Is this the only way?
    If I do that on a view that didn't have other views as children defined in the AM I don't have any problem and it works like I want.
    But if I do it on a view that did have other views as children defined in the AM it makes the page(s) using that view with the children iterators behave badly. Half the information quits showing up, etc.
    For example, ... if I go to the "SomeView" which was defined with only one entity object association, and I add the entity objects (that are the basis of instances of VO2 and VO3 ) as referenceable only, it totally breaks the page where I display a single VO1 and use it's VO2 and VO3 children. IS THIS NORMAL OR AM I MISSING SOMETHING?
    So, is the solution that I have to have more view objects defined for different purposes ?
    Can anyone give any general guidelines for when/where to use different view objects vs. when to use different iterators. I'm not having much luck with using secondary RSI's and haven't found much info on them.
    Also, how about issues of naming iterators that are in various binding containers (ie. UI Model for a page). If I do and LOV it creates an iterator and gives it a default name like ViewNameIterator1. If I already have a different page that uses a regular (non LOV) iterator with that name, and the user goes back and forth between those pages, is that a clash?
    Finally, I've read a couple of Steve Muench's blogs on View Link consistency but I'm not sure what the rules are on when it applies and doesn't. How you turn it on or off, etc. One of his examples in http://radio.weblogs.com/0118231/2004/02/27.html talks about it in the context of two view objects that are NOT typically "linked" in a master/detail kind of way. Like an AllDepartments and a DepartmentsLessThan view. Do you have to create a View Link between them to have results of one be reflected in the other if they aren't used in the same page in a web app? Or does it happen automatically (with the caveat that you have to do the rowQualifies method). Just feels like I'm missing some pieces.
    Thanks in advance,
    Lynn

    Hi,
    I am also interested in a best-practice note from oracle.
    Currently we store history in seperate history tables for columns that changed. All this implemented in our BaseEoImpl overriding the EntityImpl.prepareForDML().
    Thanks

  • Issues in persisting dynamic entity and view objects using MDS

    Hi All,
    I'm trying to create dynamic entity and view objects per user session and to persist these objects throughout the session, I'm trying to use MDS configurations(either file or Database) in adf-config.xml.
    I'm facing following two errors while trying to run the app module:
    1. MDS error (MetadataNotFoundException): MDS-00013: no metadata found for metadata object "/model/DynamicEntityGenModuleOperations.xml"
    2. oracle.mds.exception.ReadOnlyStoreException: MDS-01273: The operation on the resource /sessiondef/dynamic/DynamicDeptEntityDef.xml failed because source metadata store mapped to the namespace / DEFAULT is read only.
    I've gone through the following links which talks about the cause of the issue, but still can't figure out the issue in the code or the config file. Please help if, someone has faced a similar issue.
    [http://docs.oracle.com/cd/E28271_01/doc.1111/e25450/mds_trouble.htm#BABIAGBG |http://docs.oracle.com/cd/E28271_01/doc.1111/e25450/mds_trouble.htm#BABIAGBG ]
    [http://docs.oracle.com/cd/E16162_01/core.1112/e22506/chapter_mds_messages.htm|http://docs.oracle.com/cd/E16162_01/core.1112/e22506/chapter_mds_messages.htm]
    Attached is the code for dynamic entity/view object generation and corresponding adf-config.xml used.
    ///////////App Module Implementation Class/////////////////////////
    public class DynamicEntityGenModuleImpl extends ApplicationModuleImpl implements DynamicEntityGenModule {
    private static final String DYNAMIC_DETP_VO_INSTANCE = "DynamicDeptVO";
    * This is the default constructor (do not remove).
    public DynamicEntityGenModuleImpl() {
    public ViewObjectImpl getDepartmentsView1() {
    return (ViewObjectImpl) findViewObject("DynamicDeptVO");
    public void buildDynamicDeptComp() {
    ViewObject internalDynamicVO = findViewObject(DYNAMIC_DETP_VO_INSTANCE);
    if (internalDynamicVO != null) {
    System.out.println("OK VO exists, return Defn- " + internalDynamicVO.getDefFullName());
    return;
    EntityDefImpl deptEntDef = buildDeptEntitySessionDef();
    ViewDefImpl viewDef = buildDeptViewSessionDef(deptEntDef);
    addViewToPdefApplicationModule(viewDef);
    private EntityDefImpl buildDeptEntitySessionDef() {
    try {
    EntityDefImpl entDef = new EntityDefImpl(oracle.jbo.server.EntityDefImpl.DEF_SCOPE_SESSION, "DynamicDeptEntityDef");
    entDef.setFullName(entDef.getBasePackage() + ".dynamic." + entDef.getName());
    entDef.setName(entDef.getName());
    System.out.println("Application Module Path name: " + getDefFullName());
    System.out.println("EntDef :" + entDef.getFileName() + " : " + entDef.getBasePackage() + ".dynamic." + entDef.getName());
    entDef.setAliasName(entDef.getName());
    entDef.setSource("DEPT");
    entDef.setSourceType("table");
    entDef.addAttribute("ID", "ID", Integer.class, true, false, true);
    entDef.addAttribute("Name", "NAME", String.class, false, false, true);
    entDef.addAttribute("Location", "LOCATION", Integer.class, false, false, true);
    entDef.resolveDefObject();
    entDef.registerSessionDefObject();
    entDef.writeXMLContents();
    entDef.saveXMLContents();
    return entDef;
    } catch (Exception ex) {
    System.out.println(ex.getLocalizedMessage());
    return null;
    private ViewDefImpl buildDeptViewSessionDef(EntityDefImpl entityDef) {
    try {
    ViewDefImpl viewDef = new oracle.jbo.server.ViewDefImpl(oracle.jbo.server.ViewDefImpl.DEF_SCOPE_SESSION, "DynamicDeptViewDef");
    viewDef.setFullName(viewDef.getBasePackage() + ".dynamic." + viewDef.getName());
    System.out.println("ViewDef :" + viewDef.getFileName());
    viewDef.setUseGlueCode(false);
    viewDef.setIterMode(RowIterator.ITER_MODE_LAST_PAGE_FULL);
    viewDef.setBindingStyle(SQLBuilder.BINDING_STYLE_ORACLE_NAME);
    viewDef.setSelectClauseFlags(ViewDefImpl.CLAUSE_GENERATE_RT);
    viewDef.setFromClauseFlags(ViewDefImpl.CLAUSE_GENERATE_RT);
    viewDef.addEntityUsage("DynamicDeptUsage", entityDef.getFullName(), false, false);
    viewDef.addAllEntityAttributes("DynamicDeptUsage");
    viewDef.resolveDefObject();
    viewDef.registerSessionDefObject();
    viewDef.writeXMLContents();
    viewDef.saveXMLContents();
    return viewDef;
    } catch (Exception ex) {
    System.out.println(ex.getLocalizedMessage());
    return null;
    private void addViewToPdefApplicationModule(ViewDefImpl viewDef) {
    oracle.jbo.server.PDefApplicationModule pDefAM = oracle.jbo.server.PDefApplicationModule.findDefObject(getDefFullName());
    if (pDefAM == null) {
    pDefAM = new oracle.jbo.server.PDefApplicationModule();
    pDefAM.setFullName(getDefFullName());
    pDefAM.setEditable(true);
    pDefAM.createViewObject(DYNAMIC_DETP_VO_INSTANCE, viewDef.getFullName());
    pDefAM.applyPersonalization(this);
    pDefAM.writeXMLContents();
    pDefAM.saveXMLContents();
    ////////adf-config.xml//////////////////////
    <?xml version="1.0" encoding="windows-1252" ?>
    <adf-config xmlns="http://xmlns.oracle.com/adf/config" xmlns:config="http://xmlns.oracle.com/bc4j/configuration" xmlns:adf="http://xmlns.oracle.com/adf/config/properties"
    xmlns:sec="http://xmlns.oracle.com/adf/security/config">
    <adf-adfm-config xmlns="http://xmlns.oracle.com/adfm/config">
    <defaults useBindVarsForViewCriteriaLiterals="true"/>
    <startup>
    <amconfig-overrides>
    <config:Database jbo.locking.mode="optimistic"/>
    </amconfig-overrides>
    </startup>
    </adf-adfm-config>
    <adf:adf-properties-child xmlns="http://xmlns.oracle.com/adf/config/properties">
    <adf-property name="adfAppUID" value="TestDynamicEC-8827"/>
    </adf:adf-properties-child>
    <sec:adf-security-child xmlns="http://xmlns.oracle.com/adf/security/config">
    <CredentialStoreContext credentialStoreClass="oracle.adf.share.security.providers.jps.CSFCredentialStore" credentialStoreLocation="../../src/META-INF/jps-config.xml"/>
    </sec:adf-security-child>
    <persistence-config>
    <metadata-namespaces>
    <namespace metadata-store-usage="mdsRepos" path="/sessiondef/"/>
    <namespace path="/model/" metadata-store-usage="mdsRepos"/>
    </metadata-namespaces>
    <metadata-store-usages>
    <metadata-store-usage default-cust-store="true" deploy-target="true" id="mdsRepos">
    <metadata-store class-name="oracle.mds.persistence.stores.file.FileMetadataStore">
    <property name="metadata-path" value="/tmp"/>
    <!-- <metadata-store class-name="oracle.mds.persistence.stores.db.DBMetadataStore">
    <property name="jndi-datasource" value="jdbc/TestDynamicEC"/>
    <property name="repository-name" value="TestDynamicEC"/>
    <property name="jdbc-userid" value="adfmay28"/>
    <property name="jdbc-password" value="adfmay28"/>
    <property name="jdbc-url" value="jdbc:oracle:thin:@localhost:1521:XE"/>-->
    </metadata-store>
    </metadata-store-usage>
    </metadata-store-usages>
    </persistence-config>
    </adf-config>
    //////////////////////////////////////////////////////////////////////////////////////////////////////////

    Hi Frank,
    I m trying to save entity and view object xml by calling writeXMLContents() and saveXMLContents() so that these objects can be retrieved using the xmls later on.
    These methods internally use MDS configuration in adf-config.xml, which is creating the issue.
    Please share your thoughts on resolving this or if, there is any other way of creating dynamic entity/view objects for db tables created at runtime.
    Nik

  • View Object in the link - CREATION

    Below is the table schema. master1, slave2, cat3 are in the LINK.
    Master1 -----> Slave2 ------> Cat3.
    (id) (id, masterId) (id, slaveId)
    We are having the UIX pages to traverse starting for Master1 and down to Cat3.
    We need to have a url that takes us directly to the Cat3 UIX page.
    ex : www.something.com/catsBrowse.do?catdId=xxx&slaveId=yyy&masterId=zzzz.
    I am trying to initialize the view object. But on executeQuery(). It gives an exception.
    How do I initialize it. Is there any samples available???
    - Thanks.

    Hi,
    using ADF:
    1. Create a page that shows data for cat3
    2. Using the ADF binding (e.f. accessing it from a Struts Action) obtain teh iterator for master1 and set it to a specific row.
    3. Do the same for Detail 2
    4. Navigate to page cat3
    Note that you don't need to access teh VO drectly but can handle this all through the binding framework
    Frank

  • Af:iterator and view accessors with bind variables

    I have a page with an af:iterator where I list up each row in a form layout. On each row there are 2 SelectOneChoice items where the current value is provided by the row. The 2 LOVs are Master-Detail-LOVs. The value of the first one restricts the values of the second one.
    Each LOV is represented by a LOV view object in a shared application module. The view object for the second LOV contains a view criteria with a selection on the column where the value is provided by the first LOV. The value for the restriction is passed via Bind Variable.
    <af:iterator id="i_images" value="#{bindings.Image.collectionModel}" var="row" rows="0" varStatus="vs">
    <af:selectOneChoice value="#{row.bindings.Master.inputValue}" label="#{bindings.Master.label}" id="soc_master" autoSubmit="true">
    <f:selectItems value="#{row.bindings.Master.items}"
    id="si3"/>
    </af:selectOneChoice>
    <af:selectOneChoice value="#{row.bindings.Detail.inputValue}" label="#{bindings.Detail.label}" id="soc2" partialTriggers="soc_master">
    <f:selectItems value="#{row.bindings.Detail.items}"
    id="si2"/>
    </af:selectOneChoice>
    The view accessor for both LOVs have the settings:
    Row Level Bind Values = true
    SharedInstance = false
    BTW: If I modify one the two view accessor the value for Row Level Bind Values disappear.
    The value for the bind variable on the view accessor is "Master" like the name of the column.
    On loading the page for the first time the LOVs and the values are properly resolved. The master LOV provides the list with all values and the Detail LOV is restricted corresponding the value of the Master LOV. Upon changing the value of the Master LOV the Detail LOV is reloaded, because of the partial trigger, but now the Detail LOV contains all the values as if now View Criteria has been provided.
    We implemented this scenario in an af:query and it worked fine. Are there any restrictions for View Accessors when using an af:iterator??
    Any help is appreciated.
    Thanks,
    Thomas
    P.S.: We're using JDeveloper 11.1.1.4.0
    Edited by: thomas.matzke on Apr 20, 2011 10:07 PM

    Hi Thomas,
    You may be hitting an error that is discussed in the following blog: http://andrejusb.blogspot.com/2011/03/adf-bc-dependent-lov-11g-ps2ps3-bug-and.html
    Hope this helps!
    Russell

Maybe you are looking for