Multiple updateable adf entity objects

I've got a situation that is real similar to something that's covered in the developer's guide, yet it's just different enough that I need to get someone's help. I have a view object that is based on two entity objects. These 2 entity objects have a one to one association with each other. They both share the same primary key (hris_id). There is no foreign key relationship between them. This hris_id column for one of the entity objects has been set as a DBSequence type so that it's value can be set by a sequence. When i want to create a new row via this view object, I need to know where/when I can get this sequence generated value from the first entity object so that when the second entity row gets created, i can use this value (hris_id) from the first entity object to populate the hris_id column in the table for the "second" entity, since both tables will need to share the same value for hris_id column. Just not sure about where in the code this needs to happen. Any ideas? Thanks.

Hi,
I think your situation is similar as described in the guide.
Override create in your view object row class, create first and second entity and probably you need to copy key value from first to second entity.
Try this:
    @Override
    protected void create(AttributeList attributeList) {
        Entity1Impl newEntity1 = getEntity1();
        Entity2Impl newEntity2 = getEntity2();
        try {
            newEntity1.create(attributeList);
            oracle.jbo.domain.Number hrisId = newEntity1.getHrisId().getSequenceNumber();
            newEntity2.create(attributeList);
            newEntity2.setHrisId(hridId);
            .Rado

Similar Messages

  • Implementing a view Object with Multiple Updateable Dependent Entity Objects

    Hello,
         I want to implement view object with multiple updateable entity object,
         i have refered this link its good https://forums.oracle.com/thread/63721
         here they have explained with 2 table,
         but when we have more then 5 tables and each table have Primary keys , Foreign key , Sequence and  trigger created on it. Then whats steps should i want to fallow.
         if possible some please provide the link or some one help me out how to do this .
         thanks in advance
         cheers

    Has the Advanced View Object Techniques been referred?

  • Problem: View Object with Multiple Updateable Dependent Entity Objects

    I try to implement a ViewObject with 2 updateable entities based on the document:
    http://www.oracle.com/technology/products/jdev/howtos/bc4j/multientityvo.html
    But I get an early NullPointerException:
    As written in the document I overriden the create method in the ViewObjectRowImpl class:
    protected void create(AttributeList attributeList) {
    // The BC4J framework will already have created "blank" entity instances
    System.out.println(getClass().getName()+"create BEGIN");
    LabEventTypeItemImpl newLabEventTypeItem = this.getLabEventTypeItem();
    System.out.println(getClass().getName()+"create 1");
    TariffItemImpl newTariffItem = this.getTariffItem();
    System.out.println(getClass().getName()+"create 2");
    try {
    // Let department "blank" entity instance to do programmatic defaulting
    newLabEventTypeItem.create(attributeList);
    System.out.println(getClass().getName()+"create 3");
    // Let employee "blank" entity instance to do programmatic defaulting
    // passing in new DepartmentImpl instance so its attributes are
    if (newTariffItem == null) // added trace
    System.out.println(getClass().getName()+"create newTariffItem IS NULLLLL");
    // available to the EmployeeImpl's create method.
    newTariffItem.create(newLabEventTypeItem);
    System.out.println(getClass().getName()+"create 4");
    catch (JboException ex) {
    if (newLabEventTypeItem != null)
    newLabEventTypeItem.revert();
    if (newTariffItem != null)
    newTariffItem.revert();
    throw ex;
    catch (Exception otherEx) {
    if (newLabEventTypeItem != null)
    newLabEventTypeItem.revert();
    if (newTariffItem != null)
    newTariffItem.revert();
    throw new RowCreateException(true /* EO Row? */,
    "LabEventTypeItem" /* EO Name */,
    otherEx /* Details */);
    System.out.println(getClass().getName()+"create END");
    The code:
    TariffItemImpl newTariffItem = this.getTariffItem();
    is equivalent in the example to:
    EmployeeImpl newEmployee = getEmployee();
    In my case this.getTariffItem() <=> getEmployee() returns null?
    I get an Exception when I call:
    newTariffItem.create(newLabEventTypeItem);
    Equivalent to:
    newEmployee.create(newDepartment);
    ViewObject partial XML:
    ======================
    <DesignTime>
    <Attr Name="_isCodegen" Value="true" />
    <Attr Name="_version" Value="10.1.2.17.96" />
    <Attr Name="_codeGenFlag2" Value="Access|Coll|Msg" />
    <Attr Name="_isExpertMode" Value="false" />
    </DesignTime>
    <EntityUsage
    Name="LabEventTypeItem"
    Entity="com.photoswing.model.lab.LabEventTypeItem" >
    <DesignTime>
    <Attr Name="_EntireObjectTable" Value="false" />
    <Attr Name="_queryClause" Value="true" />
    <Attr Name="_queryWhere" Value="(((LabEventTypeItem.LAB_EVENT_TYPE_ITEM_ID = TariffItem.LAB_EVENT_TYPE_ITEM_ID)AND (LabEventTypeItem.ITEM_ID = Item.ITEM_ID))AND (LabEventTypeItem.PRINT_SIZE_DPI_ID = PrintSizeDpi.PRINT_SIZE_DPI_ID(+)))AND (LabEventTypeItem.FILM_PRINT_SIZE_DPI_ID = FilmPrintSizeDpi.FILM_PRINT_SIZE_DPI_ID(+))" />
    <Attr Name="_queryOrderBy" Value="Item.ITEM_TYPE_ID,PrintSizeDpi.REQ_MEGA_PIXELS,Item.ITEM_ID" />
    </DesignTime>
    </EntityUsage>
    <EntityUsage
    Name="TariffItem"
    Entity="com.photoswing.model.lab.TariffItem"
    Association="com.photoswing.model.lab.TariffItemLabEventTypeItemFkAssoc"
    AssociationEnd="com.photoswing.model.lab.TariffItemLabEventTypeItemFkAssoc.TariffItemLabEventTypeItem"
    SourceUsage="com.photoswing.model.lab.LabEventTypeItemAndTariffItemVO.LabEventTypeItem"
    Reference="true" >
    <DesignTime>
    <Attr Name="_EntireObjectTable" Value="false" />
    <Attr Name="_queryClause" Value="false" />
    <AttrArray Name="_srcAttributes">
    <Item Value="com.photoswing.model.lab.LabEventTypeItem.LabEventTypeItemId" />
    </AttrArray>
    <AttrArray Name="_dstAttributes">
    <Item Value="com.photoswing.model.lab.TariffItem.LabEventTypeItemId" />
    </AttrArray>
    </DesignTime>
    </EntityUsage>
    Stack trace:
    ===========
    oracle.jbo.RowCreateException: JBO-25017: Error while creating a new entity row for LabEventTypeItem.
         at com.photoswing.model.lab.LabEventTypeItemAndTariffItemVORowImpl.create(LabEventTypeItemAndTariffItemVORowImpl.java:1370)
         at oracle.jbo.server.ViewRowImpl.callCreate(ViewRowImpl.java:353)
         at oracle.jbo.server.ViewObjectImpl.createInstance(ViewObjectImpl.java:2599)
         at oracle.jbo.server.QueryCollection.createRowWithEntities(QueryCollection.java:1048)
         at oracle.jbo.server.ViewRowSetImpl.createRowWithEntities(ViewRowSetImpl.java:1725)
         at oracle.jbo.server.ViewRowSetImpl.doCreateAndInitRow(ViewRowSetImpl.java:1769)
         at oracle.jbo.server.ViewRowSetImpl.createRow(ViewRowSetImpl.java:1749)
         at oracle.jbo.server.ViewObjectImpl.createRow(ViewObjectImpl.java:6230)
         at oracle.jbo.uicli.binding.JUCtrlActionBinding.doIt(JUCtrlActionBinding.java:891)
         at oracle.jbo.uicli.jui.JUActionBinding.doIt(JUActionBinding.java:203)
         at oracle.jbo.uicli.binding.JUCtrlActionBinding.invoke(JUCtrlActionBinding.java:478)
         at oracle.jbo.uicli.controls.JUNavigationBar.doAction(JUNavigationBar.java:306)
         at com.photoswing.component.JUNavBar.doAction(JUNavBar.java:1114)
         at oracle.jbo.uicli.controls.JUNavigationBar.actionPerformed(JUNavigationBar.java:259)
         at com.photoswing.component.JUNavBar.actionPerformed(JUNavBar.java:419)
         at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1786)
         at javax.swing.AbstractButton$ForwardActionEvents.actionPerformed(AbstractButton.java:1839)
         at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:420)
         at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:258)
         at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:245)
         at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:231)
         at java.awt.Component.processMouseEvent(Component.java:5100)
         at java.awt.Component.processEvent(Component.java:4897)
         at java.awt.Container.processEvent(Container.java:1569)
         at java.awt.Component.dispatchEventImpl(Component.java:3615)
         at java.awt.Container.dispatchEventImpl(Container.java:1627)
         at java.awt.Component.dispatchEvent(Component.java)
         at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java)
         at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3198)
         at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3128)
         at java.awt.Container.dispatchEventImpl(Container.java:1613)
         at java.awt.Window.dispatchEventImpl(Window.java)
         at java.awt.Component.dispatchEvent(Component.java)
         at java.awt.EventQueue.dispatchEvent(EventQueue.java:458)
         at com.photoswing.view.start.WaitCursorEventQueue.dispatchEvent(PhotoWebshopDesktop.java:3077)
         at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:201)
         at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151)
         at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
         at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:137)
         at java.awt.EventDispatchThread.run(EventDispatchThread.java:100)
    ## Detail 0 ##
    java.lang.NullPointerException
         at com.photoswing.model.lab.LabEventTypeItemAndTariffItemVORowImpl.create(LabEventTypeItemAndTariffItemVORowImpl.java:1355)
         at oracle.jbo.server.ViewRowImpl.callCreate(ViewRowImpl.java:353)
         at oracle.jbo.server.ViewObjectImpl.createInstance(ViewObjectImpl.java:2599)
         at oracle.jbo.server.QueryCollection.createRowWithEntities(QueryCollection.java:1048)
         at oracle.jbo.server.ViewRowSetImpl.createRowWithEntities(ViewRowSetImpl.java:1725)
         at oracle.jbo.server.ViewRowSetImpl.doCreateAndInitRow(ViewRowSetImpl.java:1769)
         at oracle.jbo.server.ViewRowSetImpl.createRow(ViewRowSetImpl.java:1749)
         at oracle.jbo.server.ViewObjectImpl.createRow(ViewObjectImpl.java:6230)
         at oracle.jbo.uicli.binding.JUCtrlActionBinding.doIt(JUCtrlActionBinding.java:891)
         at oracle.jbo.uicli.jui.JUActionBinding.doIt(JUActionBinding.java:203)
         at oracle.jbo.uicli.binding.JUCtrlActionBinding.invoke(JUCtrlActionBinding.java:478)
         at oracle.jbo.uicli.controls.JUNavigationBar.doAction(JUNavigationBar.java:306)
         at com.photoswing.component.JUNavBar.doAction(JUNavBar.java:1114)
         at oracle.jbo.uicli.controls.JUNavigationBar.actionPerformed(JUNavigationBar.java:259)
         at com.photoswing.component.JUNavBar.actionPerformed(JUNavBar.java:419)
         at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1786)
         at javax.swing.AbstractButton$ForwardActionEvents.actionPerformed(AbstractButton.java:1839)
         at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:420)
         at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:258)
         at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:245)
         at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:231)
         at java.awt.Component.processMouseEvent(Component.java:5100)
         at java.awt.Component.processEvent(Component.java:4897)
         at java.awt.Container.processEvent(Container.java:1569)
         at java.awt.Component.dispatchEventImpl(Component.java:3615)
         at java.awt.Container.dispatchEventImpl(Container.java:1627)
         at java.awt.Component.dispatchEvent(Component.java)
         at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java)
         at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3198)
         at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3128)
         at java.awt.Container.dispatchEventImpl(Container.java:1613)
         at java.awt.Window.dispatchEventImpl(Window.java)
         at java.awt.Component.dispatchEvent(Component.java)
         at java.awt.EventQueue.dispatchEvent(EventQueue.java:458)
         at com.photoswing.view.start.WaitCursorEventQueue.dispatchEvent(PhotoWebshopDesktop.java:3077)
         at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:201)
         at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151)
         at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
         at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:137)
         at java.awt.EventDispatchThread.run(EventDispatchThread.java:100)
    Thanks
    Frederic

    I get the same error on the scott schema:
    protected void create(AttributeList attributeList) {
    // The BC4J framework will already have created "blank" entity instances
    DeptImpl newDept = getDept();
    EmpImpl newEmp = getEmp();
    try {
    // Let dept "blank" entity instance to do programmatic defaulting
    newDept.create(attributeList);
    // Let emp "blank" entity instance to do programmatic defaulting
    // passing in new DeptImpl instance so its attributes are
    // available to the EmpImpl's create method.
    if (newEmp == null)
    System.out.println(getClass().getName()+".create newEmp IS NULL");
    newEmp.create(newDept);
    catch (JboException ex) {
    newDept.revert();
    newEmp.revert();
    throw ex;
    catch (Exception otherEx) {
    newDept.revert();
    newEmp.revert();
    throw new RowCreateException(true /* EO Row? */,
    "Dept" /* EO Name */,
    otherEx /* Details */);
    The trace shows:
    model.CreateDepartmentAndFirstEmployeeRowImpl.create newEmp IS NULL
    Another problem:
    Refreshing Foreign Key Values in New Employees Once Final Department Id is Assigned:
    Number newDeptno = getDeptno().getSequenceNumber();
    doesn't compile getSequenceNumber() unknown.
    I send you a usecase as a zip file.
    The code for Refreshing Foreign Key in is comment at the end of the DeptImpl file.
    Regards
    Frederic
    I send you the

  • Can Designer generate ADF Entity Objects, View Objects and Apps Module ?

    Hi all,
    On what way can Designer integrate with JDeveloper (+ ADF) ?
    Can Designer generate ADF Entity Objects, View Objects and Apps Module ?
    Thank you for your help,
    xtanto

    Designer itself has no direct integration with JDeveloper. However, there are three options. First of all, you can get a JDeveloper extension (download this separately) that lets you create a Connection to a Designer repository. From that Connection you can find modules that you defined in Designer and generate Entity and View objects for the tables and columns that you used in those modules, and an Application Module. It does not create JSPs or other user interface objects.
    Another option is to buy JHeadstart from Oracle. This contains a set of code generators and ADF extensions that include an ability to get information from a Designer repository. JHeadstart works fine for non-Designer users too, but was built by the same people who wrote Designer Headstart - they know the repository API intimately.
    The third option is to download Oracle Designer Extension Builder (ODEB) which was just recently made available. This is a product of a collaboration between Designer users from the Oracle Development Tools Users Group (ODTUG) and Oracle to extend the capabilities of Designer with user written tools and utilities. You could use ODEB to write your own generators for ADF Business Components. Or you could wait and see if someone else in the user community does this. I hope that you or whoever does such a generator will be willing to share it with us all.

  • Passing SQL Server identity attributes values into adf entity objects

    Hi all.
    I'm using Jdeveloper 10g for developing an ADF Swing application based on MS SQL Server DB.
    Does anyone know if it is possible to pass SQL Server identity attributes values into the correspondent attrributes of adf entity objects, like we do with Oracle DB Sequence.
    The problem is that i should somhow implement cascade deleting of detail view objects, so i should use the composition association. But since i cant fill the primary key attribute with appropriate value (that is actually a ms sql server db sequence value) i always get
    the following exception: oracle.jbo.InvalidOwnerException: JBO-25030 as i try to create a new pair of master/detail objects.
    Thanks in advance.
    Alex.

    The approach is good. but i still dont understand how i can address the sql server db sequence (identity field) programmatically...
    The code offered
    SequenceImpl sequence = new SequenceImpl("PRODUCTS_SEQ",getDBTransaction());
    setProdId(sequence.getSequenceNumber());
    generates something like this:
    select deq_name.nextval from dual
    but this syntax works for oracle only... and not for sql server...
    Edited by: Timin on Mar 26, 2009 6:34 AM
    Edited by: Timin on Mar 26, 2009 10:25 AM

  • Should ADF Entity Object Map to Database Table or View?

    We are building a new 3-tier JClient/ADF application. We have mapped most entity objects directly to database tables. Now that we are preparing to deploy, our DBA is angry; he believes that all entity objects should be mapped to database views. The developers see this as a headache, UML can not forward/reverse changes, and now we have another layer of abstraction, which doesn't seem to serve a useful purpose. What is the best practice in a new 3-tier application?

    Hi,
    I'm still having problems but I found out why these tables are returning errors. The username I've been given by the DBA to connect to the database is CONSULTA, but this user is only for querying purposes, the actual objects reside on a differente schema, of course, which is PROD. So the line:
    "CONSULTA"."ESTADOS"@"PROD@AYADEV_LOCATION" "ESTADOS"
    raises an exception because the table ESTADOS is not located on that schema, but on PROD. If I query the table from SQL Plus with:
    SELECT *
    FROM [email protected]@AYADEV_LOCATION
    then there's no problem at all.
    Why is this? How do I instruct OWB to point to the correct schema or to avoind fully qualifying the table name?
    Please help me, I'm kind of confused here.
    Best Regards,
    --oswaldo.
    [osantos]

  • HOWTO: Implementing a ViewObject with Multiple Updateable Dependent Entity

    Hi All,
    I have implemented this concept in one of my project for (1-1 entity relationship). It worked very well. But I want try with parent child tables like (1 to many). I tried with the code given by "Adrian Nica " in previous thread. But my problem is When I make Parent table as updateable and reference I am not able to create a row for that VO at all.
    Steve, I read your reply in previous thread. But that is not helpful when you want create a new row as parent record as reference.
    Please help me to solve this....
    --Thanks
    Rama

    Hi,
    Thank you for your reply. I tried set all the attributes for parent EO to "Discriminator" which is added as "updateable and reference" in multiple updateable VO. But I am still getting " oracle.jbo.RowCreateException: JBO-25017:" and " Null Pointer Exception".
    Do I need to set the child VO also as "discriminator" attributes for that EO.
    --Thanks
    Rama

  • Human Task Bulk API calls from ADF Entity Object

    Dear all,
    Jdev: 11.1.1.7.1
    We have a requirement where in human task APIs need to be invoked on status changes of an ADF Entity (EO). We presently achieve this in the afterCommit() method and all is well.
    But we are looking to leverage the Human Task bulk update APIs and am wondering how to do that.
    The EO does support a batch mode - Is there a batch mode API that we can override to place the bulk update API call?
    Thanks

    in version 11.1.1.6 getInputStream() and getContent() do not work, this is know bug you can find in the oracle support at
    https://support.oracle.com/epmos/faces/ui/km/SearchDocDisplay.jspx?_afrLoop=175895926830291&type=DOCUMENT&id=1451100.1&displayIndex=8&_afrWindowMode=0&_adf.ctrl-state=tlzphlagm_69
    there you can find a .zip file with a full example code.
    Actually Oracle does not consider it a bug:
    "This issue was reviewed by Engineering in Bug 13873092 and is not considered a bug. There is a workaround to retrieve task contents through 'WFTaskUpdate' Servlet as described in the attached Sample project."
    but in my opinion it is a very big bug endeed, and it drove me mad for days! :(
    Anyway here is a snippet with the workaroud in case you do not have access to the oracle support site:
    if att is you attachment and wfContext is your workflow context set somewhere
    AttachmentType att;
    IWorkflowContext wfContext;
    instead of doing this
    InputStream inputStream = att.getInputStream();
    do this
    String contextId = wfContext.getToken();
    String attachmentURL = WFUtils.getTaskUpdateURL(att.getTaskId(), contextId, "" + att.getVersion(),att.getName(),
    Constants.WFTASK_QUERY_ATTACHMENT_BUTTON_KEY_NAME);
    if ( attachmentURL == null ) {
    System.out.println("Unable to generate URL to get attachmentcontent");
    try {
    URL url = new URL(attachmentURL);
    URLConnection conn = url.openConnection();
    InputStream inputStream = conn.getInputStream();
    } catch ( Exception e ) {
    e.printStackTrace();
    hope this helps
    Massi

  • ADF Entity Object: Securable Operation "Create"?

    Hello,
    I have the following scenario: Within one view I have a table bound to a view object that bases on an entity object. The view also contains a "create insert" button.
    Now I want to secure the "create insert" operation with a certain application role. However, within the entity object I can only activate the removeCurrentRow, read and update options as securable operation. Is there any way to control the creation of new items?
    Regards,
    Michael

    Hi.
    welcome to forum!
    Maybe this post can be useful http://andrejusb.blogspot.com/2011/03/how-to-enable-create-operation-security.html

  • ADF Entity Object

    Is it true that
    1) Against every request, for data, from the screen (ViewController UI), the data is fetched from the related Entity object only and no request is fired to the database at any level.
    2) When both Application Server & database Server are up, Entity Object & the related database table are always completely synchronized (Whether data is changed manually directly at database level or through related ViewController UI).

    Hi,
    see the documentation
    http://www.oracle.com/webapps/online-help/jdeveloper/10.1.2?topic=bc_acaches_html
    and
    http://www3.nexpak.com/bc4jdoc/bc_ahowdoesbltcachedata.htm
    Frank

  • Implement a View Object with multiple entity objects

    Hi
    In 'How to' section on the 'otn.oracle.com' (Jdeveloper) web site is tutorial how to implement a View Object with multiple updateable dependent entity objects.
    It allows user to insert an employee and a department at the same time.
    But I would like to change this example to insert a new department only if it does not already exist. How to change this sample?
    Is there any other way to this?
    Thanks
    Regards
    Gorazd

    Once again the structure, sorry.
    ViewObject
    |-ParentEntityObject
    ..|-PId
    ..|-PAttribute
    ..|-CId (FK)
    |-ParentChildAssociation
    |-ChildEntityObject
    ..|-CId
    ..|-CAttribute
    Christian

  • VO with "Conditionnaly" Multiple Updateable Dependent EO

    Hi,
    I have a special case of:
    View Object with Multiple Updateable Dependent Entity Objects.
    One of the Updateable Entities must not be created in some cases => outer join in query condition
    I implemented succesfully the techical doc:
    http://www.oracle.com/technology/products/jdev/howtos/bc4j/multientityvo.html
    but I can't figure out how to avoid the creation of that Entity row.
    I remove the row in the create method but the default values are still displayed.
    Is there a better way to achieve this?
    How can I clear the default values to avoid the dead entity exception when those fields are accessed?
    Thanks
    Fred

    I wanted to implement gapless sequence number. But, when i try to to implement it then (DBSequence)attributeList.getAttribute("Id");
    returns null.
    and then jbo.null object reference exception is trhown.
    Do you know how I can implement gapless sequence number using this approach.

  • Problem with using multiple Entity Objects in a view Object.

    Hi
    Thank you for reading my post
    I have create 3 Business components for 3 of my database tables and now
    I must add 3 tables in a View object so i used Jdeveloper Wizard to create the View Object.
    -I Add Entity Objects which are business components to this view (In Step 2 of the Create Vview Object wizard).
    -In step 3 that I add Attributes all my attributes are marked as Transient
    Can some one explain why it happens?
    I need one of those tables to be updateable and two other tables are not updateable.
    What should should i do to achieve this?
    I should say that tables does not have any database relation (Foreign Key I Mean).
    Thanks.

    Hi user505214
    When you created your VO, on selecting the second EO, you'll note at the bottom of the same page on the wizard/editor, checkboxes for updatable or by reference. By default reference is checked and this will make your second EO's attributes transient.
    In the JDeveloper Developer's Guide for 4GL/Forms programmers, the following sections outline the difference between updatable or by reference:
    7.5 Including Reference Entities in Join View Objects
    27.9 Creating a View Object with Multiple Updatable Entities
    Make sure to read 27.9 if updatable is what you want as it indicates you may need to add some additional code.
    Hope this helps.
    CM.

  • Best practice for linking fields from multiple entity objects

    I am currently transitioning from PHP to ADF. I'm looking for the best practice for linking data from multiple entity objects.
    Example:
    EO 'REQUESTS' has fields: req_id, name, dt, his_stat_id, her_stat_id
    EO 'STATUSES' has fields: stat_id, short_txt_descr
    'REQUESTS' is linked to EO 'STATUSES' on: STATUSES.stat_id = REQUESTS.his_status_id
    'REQUESTS' is also linked to EO 'STATUSES' on: STATUSES.stat_id = REQUESTS.her_status_id
    REQUESTS.his_status_id is independent of REQUESTS.her_status_id
    When I create a VO for REQUESTS, I want to display: REQUESTS.name, REQUESTS.dt, STATUSES.short_txt_descr (for his_stat_id), STATUS.short_txt_descr (for her_stat_id)
    What is the best practice for accomplishing this? It appears I could do it a few different ways:
    1. Create the REQUESTS VO with a LOV for his_stat_id and her_stat_id
    2. Create the REQUESTS VO with the join to STATUSES performed within the query for the VO. This would require joining on the STATUSES EO twice (his_stat_id, her_stat_id)
    3. I just started reading about View Links - would that somehow do what I'm looking for?
    I also need to be able to update his_status_id and her_status_id through the by selecting a STATUSES.short_txt_descr from a dropdown.
    Any suggestions on how to approach such a stupidly simple task?
    Using jDeveloper 11.1.2.2.0 if that makes a difference in the solution.
    Thanks ahead of time,
    CJ

    CJ,
    I vote for solution 1 as it's just your use case. As you said you what to update the his_status_id and her_status_id through the by selecting a STATUSES.short_txt_descr by a drop down. This is exactly the LOV solution.
    ViewLinks are used fro master detail navigation (which you don't do here) and Joining the data make it difficult to update (and you still need a LOV for the drop down box.
    Timo

  • ADF: use of view link Accessor in Entity Object = always null?

    Hi,
    JClient 9.0.5.2, adf model.
    I would like to use the view link accessor method in the master EO to retrieve detail EO values and the view link accessor method in the detail EO to retrieve master EO values.
    Detail Rule:
    In the detail EO an attribute is derived from an attribute of the master EO: detail attribute = master attribute.
    Master Rule:
    In the master EO an attribute is derived from the detail EO: master atribute set to 0 if detail EO exist else set to 0.
    Tables:
    Table Master => MasterEO => MasterVO
    - masterPK (not updateable)
    - masterField (not updateable)
    - hasDetailsFlag
    Table Detail => DetailEO => DetailVO
    - detailPK (not updateable)
    - masterPK => foreign key (not updateable)
    - masterField (query only)
    MasterDetailLink based on foreign key.
    In link wizard I asked for the generation of following accessors in the source & destination Entity Objects:
    In DetailEO accessor name: RetrieveFromMaster
    In MasterEO accessor name: RetrieveFromDetail
    In the DetailEO, I asked for the generation of the DetailEOImpl file, accessors and create method.
    As wriiten in the file, before the create method:
    ** Add attribute defaulting logic in this method. **
    I tought this is the place to retrieve the master attribute:
    The code:
    MasterVORowImpl masterVO = getRetrieveFromMaster();
    if (masterVO == null)
    System.out.println("MasterVORowImpl masterVO create NNNNNNNNNNNUUUUUUUULLLLLLLLLL");
    The masterVO is always null?
    I suppose I didn't understand something, my guest is that ViewObjects may not be used for default logic?
    I know how to implement those rules in the database with triggers.
    I think that the data I need for implementing those rules exist somewhere at the ADF level so retrieving the data from the db is not necessary?
    Could somebody give some clues?
    I didn't find a similar example in the Business Rules in BC4J document.
    Your help will be appreciated
    Frederic

    Hi,
    Detail Rule, copy attribute value form master.
    In DetailEOImpl:
    protected void create(AttributeList attributeList)
    setAttribute(MASTERFIELD,this.getMaster().getMasterField());
    super.create(attributeList);
    Master rule, set flag to 0 if no details else set to 1.
    In the MasterEOImpl added method to check if detail row exists based on Row Iterator => no db retrieval?
    This method also sets the flag accordingly:
    protected void checkHasOtherDetails()
    oracle.jbo.RowIterator ri = this.getRetrieveFromdetail();
    ri.last();
    // last() must be called else hasNext() returns true even on last delete ???
    Number hasDetails = Constants.NUMBER_NO; // = 1
    if (ri.hasNext() || ri.hasPrevious())
    hasDetails = Constants.NUMBER_YES; // = 0
    if (!getHasDetailsFlag().equals(hasDetails)) {
    this.setHasDetailsFlag(hasDetails);
    I call this method in the remove method of the detailEOImpl:
    public void remove()
    this.getRetrieeFromMaster().checkHasOtherDetails();
    super.remove();
    To set the flag I added follwoing code in the create method of the DetailEOImpl:
    protected void create(AttributeList attributeList)
    setAttribute(MASTERFIELD,this.getMaster().getMasterField());
    **** ADDED ***
    Number masterHasDetailsFlag = getRetrieveFromMaster().getHasDetailsFlag();
    if (!masterHasDetailsFlag.equals(Constants.NUMBER_YES)) {
    getRetrieveFromMaster().setHasDetailsFlag(Constants.NUMBER_YES));
    super.create(attributeList);
    One more question:
    Is there a danger of calling last() on row iterators in create/update/remove methods of *Impl files?
    => current row changed => any effect on display in JPanel
    Thanks
    Frederic
    PS All variable/method/class names have been manually renamed in this code so some small syntax problems may exist.

Maybe you are looking for