Retrieving the view object associated to an entity

Hi,
Is there any way to retrieve the ViewObjectImpl or the ViewRowImpl that holds the instance of a particular EntityImpl.
I'm doing some operations an EntityImpl instance, and I need to refresh the view that holds that instance. How can I retrieve it ?

Dwarven,
There may be many View Objects associated with a given entity object. You can determine programatically which EO's are referred to by a given VO, but not to my knowledge, the other way around.
John

Similar Messages

  • RowSetInfo; bc4j; how to get the View Object

    So I'm trying to get/update/insert/delete records in a database that contain an interMedia image in a blob.
    I've figured out that I can't simply set the ImmediateAccess attribute. It doesn't like that...
    So I'm trying to go after the view object, since the interMedia white paper uses a VO row setAttribute to accomplish the write.
    RowSetInfo extends ResultSetInfo which has a method getViewObject(). Cool.
    So I try it... and get an error that getViewObject() has protected access.
    Anyone know what I am doing wrong? Or should I be even taking this approach?!?!?!
    If I go exclusively with the VO layer... how do I preserve the navigationBar functionality? Or do I need to roll my own?
    ( NOTE: This hilights another example of the perception of 'friction' between rowsetinfos and the view objects/entity objects. An approach that makes "sense" to me as a naive novice didn't pan out. And oddly, most of the bc4j examples go against VOs when, if you are an application programmer, you may never see or use the VO methods ( although it looks like we should be)... we're working at the ResultSetInfo layer. )
    Is the the observation of other folk who are building Java Applications/Applets? Or do you all work directly with VOs instead of going through the ResultSetInfo "layer"?

    Here is some sample code that I am currently working on and will post on OTN when complete. The code shows how to access a BC4J Domain based on an Oracle type. Working with interMedia is similar since interMedia utilizes Oracle Object types. Please note that I have not tested this yet against interMedia, but I'm hoping that you may find the general process useful.
    // Copyright (c) 2000 Oracle Corporation
    package ObjectSampleDAC;
    import oracle.dacf.control.swing.*;
    import javax.swing.*;
    import oracle.dacf.dataset.*;
    import oracle.dacf.dataset.connections.*;
    import java.awt.*;
    import oracle.jdeveloper.layout.*;
    import java.awt.event.*;
    import javax.infobus.*;
    import oracle.jbo.domain.DomainInterface;
    import ObjectSampleBC4J.common.TAddress;
    import java.sql.SQLException;
    * A Frame class.
    * <P>
    * @author Scott Tiger
    public class Frame1 extends InfoFrame {
    * Constructs a new instance.
    public Frame1() {
    super();
    try {
    jbInit();
    sessionInfo1.publishSession();
    // call my initialization method
    bfInit();
    catch (Exception e) {
    e.printStackTrace();
    * Initializes the state of this instance.
    private void jbInit() throws Exception {
    /* All of the following code in this method was added by the designer except where noted below
    EmailrowSetInfo1.setName("Email");
    jPanel3.setLayout(gridBagLayout1);
    StatusrowSetInfo1.setName("Status");
    AddressrowSetInfo1.setName("Address");
    PasswordrowSetInfo1.setName("Password");
    UsernamerowSetInfo1.setName("Username");
    LastnamerowSetInfo1.setName("Lastname");
    FirstnamerowSetInfo1.setName("Firstname");
    IdrowSetInfo1.setName("Id");
    rowSetInfo1.setAttributeInfo( new AttributeInfo[] {
    IdrowSetInfo1,
    FirstnamerowSetInfo1,
    LastnamerowSetInfo1,
    UsernamerowSetInfo1,
    PasswordrowSetInfo1,
    AddressrowSetInfo1,
    StatusrowSetInfo1,
    EmailrowSetInfo1} );
    this.setDataItemName("infobus:/oracle/sessionInfo1");
    this.setTitle("Customer Information");
    this.getContentPane().setLayout(borderLayout1);
    this.setSize(new Dimension(536, 473));
    jPanel1.setLayout(borderLayout2);
    sessionInfo1.setAppModuleInfo(new ModuleInfo("ObjectSampleBC4J", "ObjectSampleBC4JModule"));
    sessionInfo1.setConnectionInfo(new LocalConnection("MyJdbcConn"));
    sessionInfo1.setName("sessionInfo1");
    rowSetInfo1.setQueryInfo(new QueryViewInfo(
    "CustomerView",
    rowSetInfo1.setSession(sessionInfo1);
    rowSetInfo1.setName("rowSetInfo1");
    /* The following listener was added using the event tab in the property inspector in design
    mode. The rowsetPopulated method is called when the rowset is queried/requeried.
    rowSetInfo1.addChangeListener(new oracle.dacf.dataset.ChangeAdapter() {
    public void rowsetPopulated(RowSetChangeEvent e) {
    rowSetInfo1_rowsetPopulated(e);
    textFieldControl1.setText("textFieldControl1");
    textFieldControl2.setDataItemName("infobus:/oracle/sessionInfo1/rowSetInfo1/Firstname");
    textFieldControl2.setText("textFieldControl2");
    textFieldControl3.setDataItemName("infobus:/oracle/sessionInfo1/rowSetInfo1/Lastname");
    textFieldControl3.setText("textFieldControl3");
    textFieldControl4.setDataItemName("infobus:/oracle/sessionInfo1/rowSetInfo1/Username");
    textFieldControl4.setText("textFieldControl4");
    textFieldControl5.setDataItemName("infobus:/oracle/sessionInfo1/rowSetInfo1/Password");
    textFieldControl5.setText("textFieldControl5");
    textFieldControl6.setDataItemName("infobus:/oracle/sessionInfo1/rowSetInfo1/Status");
    textFieldControl6.setText("textFieldControl6");
    textFieldControl7.setDataItemName("infobus:/oracle/sessionInfo1/rowSetInfo1/Email");
    textFieldControl7.setText("textFieldControl7");
    navigationBar1.setDataItemName("infobus:/oracle/sessionInfo1/rowSetInfo1");
    jLabel1.setText("ID:");
    jLabel2.setText("First Name:");
    jLabel3.setText("Last Name:");
    jLabel4.setText("User Name:");
    jLabel5.setText("Password:");
    jLabel6.setText("Status:");
    jLabel7.setText("Email:");
    jLabel8.setText("Address:");
    jPanel4.setLayout(      gridBagLayout2);
    textFieldStreet.setColumns(20);
    textFieldStreet.setText("textFieldStreet");
    /* The following listener (as well as the listeners on textFieldCity, textFieldState, and
    textFieldZipcode were added by the designer, but the focusGained and focusLost methods
    were modified in each case to call a common textField_focusGained method
    textFieldStreet.addFocusListener(new java.awt.event.FocusAdapter() {
    public void focusGained(FocusEvent e) {
    textField_focusGained(e);
    public void focusLost(FocusEvent e) {
    textField_focusLost(e);
    textFieldCity.setColumns(20);
    textFieldCity.setText("textFieldCity");
    textFieldCity.addFocusListener(new java.awt.event.FocusAdapter() {
    public void focusGained(FocusEvent e) {
    textField_focusGained(e);
    public void focusLost(FocusEvent e) {
    textField_focusLost(e);
    textFieldState.setColumns(20);
    textFieldState.setText("textFieldState");
    textFieldState.addFocusListener(new java.awt.event.FocusAdapter() {
    public void focusGained(FocusEvent e) {
    textField_focusGained(e);
    public void focusLost(FocusEvent e) {
    textField_focusLost(e);
    textFieldZipcode.setColumns(20);
    textFieldZipcode.setText("textFieldZipcode");
    textFieldZipcode.addFocusListener(new java.awt.event.FocusAdapter() {
    public void focusGained(FocusEvent e) {
    textField_focusGained(e);
    public void focusLost(FocusEvent e) {
    textField_focusLost(e);
    jLabel9.setText("Street:");
    jLabel10.setText("City:");
    jLabel11.setText("State:");
    jLabel12.setText("Zip Code:");
    textFieldControl1.setDataItemName("infobus:/oracle/sessionInfo1/rowSetInfo1/Id");
    this.getContentPane().add(jPanel1, BorderLayout.CENTER);
    jPanel1.add(jPanel2, BorderLayout.NORTH);
    jPanel2.add(navigationBar1, null);
    jPanel1.add(jPanel3, BorderLayout.CENTER);
    jPanel3.add(textFieldControl1, new GridBagConstraints2(1, 0, 1, 1, 1.0, 0.0,
    GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(37, 11, 0, 0), 0, 0));
    jPanel3.add(textFieldControl2, new GridBagConstraints2(1, 1, 1, 1, 1.0, 0.0,
    GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(7, 11, 0, 0), 0, 0));
    jPanel3.add(textFieldControl3, new GridBagConstraints2(1, 2, 1, 1, 1.0, 0.0,
    GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(7, 11, 0, 0), 0, 0));
    jPanel3.add(textFieldControl4, new GridBagConstraints2(1, 3, 1, 1, 1.0, 0.0,
    GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(6, 11, 0, 0), 0, 0));
    jPanel3.add(textFieldControl5, new GridBagConstraints2(1, 4, 1, 1, 1.0, 0.0,
    GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(6, 11, 0, 0), 0, 0));
    jPanel3.add(textFieldControl6, new GridBagConstraints2(1, 5, 1, 1, 1.0, 0.0,
    GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(7, 11, 0, 0), 0, 0));
    jPanel3.add(textFieldControl7, new GridBagConstraints2(1, 6, 1, 1, 1.0, 0.0,
    GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(6, 11, 0, 0), 0, 0));
    jPanel3.add(jLabel1, new GridBagConstraints2(0, 0, 1, 1, 0.0, 0.0,
    GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(37, 106, 0, 0), 0, 0));
    jPanel3.add(jLabel2, new GridBagConstraints2(0, 1, 1, 1, 0.0, 0.0,
    GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(8, 54, 0, 0), 0, 0));
    jPanel3.add(jLabel3, new GridBagConstraints2(0, 2, 1, 1, 0.0, 0.0,
    GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(8, 54, 0, 0), 0, 0));
    jPanel3.add(jLabel4, new GridBagConstraints2(0, 3, 1, 1, 0.0, 0.0,
    GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(10, 54, 0, 0), 0, 0));
    jPanel3.add(jLabel5, new GridBagConstraints2(0, 4, 1, 1, 0.0, 0.0,
    GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(8, 62, 0, 0), 0, 0));
    jPanel3.add(jLabel6, new GridBagConstraints2(0, 5, 1, 1, 0.0, 0.0,
    GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(9, 83, 0, 0), 0, 0));
    jPanel3.add(jLabel7, new GridBagConstraints2(0, 6, 1, 1, 0.0, 0.0,
    GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(9, 86, 0, 0), 0, 0));
    jPanel3.add(jLabel8, new GridBagConstraints2(0, 7, 1, 1, 0.0, 0.0,
    GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(7, 72, 94, 0), 0, 0));
    jPanel3.add(jPanel4, new GridBagConstraints2(1, 7, 1, 1, 0.0, 0.0,
    GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 0, 0));
    jPanel4.add(textFieldZipcode, new GridBagConstraints2(1, 3, 1, 1, 0.0, 0.0,
    GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(0, 10, 0, 0), 0, 0));
    jPanel4.add(textFieldState, new GridBagConstraints2(1, 2, 1, 1, 0.0, 0.0,
    GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(0, 10, 0, 0), 0, 0));
    jPanel4.add(jLabel9, new GridBagConstraints2(0, 0, 1, 1, 0.0, 0.0,
    GridBagConstraints.EAST, GridBagConstraints.NONE, new Insets(5, 0, 0, 0), 0, 0));
    jPanel4.add(textFieldStreet, new GridBagConstraints2(1, 0, 1, 1, 0.0, 0.0,
    GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(0, 10, 0, 0), 0, 0));
    jPanel4.add(jLabel10, new GridBagConstraints2(0, 1, 1, 1, 0.0, 0.0,
    GridBagConstraints.EAST, GridBagConstraints.NONE, new Insets(5, 0, 0, 0), 0, 0));
    jPanel4.add(jLabel11, new GridBagConstraints2(0, 2, 1, 1, 0.0, 0.0,
    GridBagConstraints.EAST, GridBagConstraints.NONE, new Insets(5, 0, 0, 0), 0, 0));
    jPanel4.add(jLabel12, new GridBagConstraints2(0, 3, 1, 1, 0.0, 0.0,
    GridBagConstraints.EAST, GridBagConstraints.NONE, new Insets(5, 0, 0, 0), 0, 0));
    jPanel4.add(textFieldCity, new GridBagConstraints2(1, 1, 1, 1, 0.0, 0.0,
    GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(0, 10, 0, 0), 0, 0));
    /* The following vaiable declarations were made by the designer
    BorderLayout borderLayout1 = new BorderLayout();
    JPanel jPanel1 = new JPanel();
    SessionInfo sessionInfo1 = new SessionInfo();
    RowSetInfo rowSetInfo1 = new RowSetInfo();
    AttributeInfo IdrowSetInfo1 = new AttributeInfo(java.sql.Types.NUMERIC);
    AttributeInfo FirstnamerowSetInfo1 = new AttributeInfo(java.sql.Types.VARCHAR);
    AttributeInfo LastnamerowSetInfo1 = new AttributeInfo(java.sql.Types.VARCHAR);
    AttributeInfo UsernamerowSetInfo1 = new AttributeInfo(java.sql.Types.VARCHAR);
    AttributeInfo PasswordrowSetInfo1 = new AttributeInfo(java.sql.Types.VARCHAR);
    AttributeInfo AddressrowSetInfo1 = new AttributeInfo();
    AttributeInfo StatusrowSetInfo1 = new AttributeInfo(java.sql.Types.VARCHAR);
    AttributeInfo EmailrowSetInfo1 = new AttributeInfo(java.sql.Types.VARCHAR);
    JPanel jPanel2 = new JPanel();
    JPanel jPanel3 = new JPanel();
    TextFieldControl textFieldControl1 = new TextFieldControl();
    TextFieldControl textFieldControl2 = new TextFieldControl();
    TextFieldControl textFieldControl3 = new TextFieldControl();
    TextFieldControl textFieldControl4 = new TextFieldControl();
    TextFieldControl textFieldControl5 = new TextFieldControl();
    TextFieldControl textFieldControl6 = new TextFieldControl();
    TextFieldControl textFieldControl7 = new TextFieldControl();
    BorderLayout borderLayout2 = new BorderLayout();
    NavigationBar navigationBar1 = new NavigationBar();
    JLabel jLabel1 = new JLabel();
    JLabel jLabel2 = new JLabel();
    JLabel jLabel3 = new JLabel();
    JLabel jLabel4 = new JLabel();
    JLabel jLabel5 = new JLabel();
    JLabel jLabel6 = new JLabel();
    JLabel jLabel7 = new JLabel();
    JLabel jLabel8 = new JLabel();
    GridBagLayout gridBagLayout1 = new GridBagLayout();
    JPanel jPanel4 = new JPanel();
    JTextField textFieldStreet = new JTextField();
    JTextField textFieldCity = new JTextField();
    JTextField textFieldState = new JTextField();
    JTextField textFieldZipcode = new JTextField();
    JLabel jLabel9 = new JLabel();
    JLabel jLabel10 = new JLabel();
    JLabel jLabel11 = new JLabel();
    JLabel jLabel12 = new JLabel();
    GridBagLayout gridBagLayout2 = new GridBagLayout();
    /* The following declarations were made manually
    /* DomainAccess provides a means for getting and setting values of a column object as domain
    DomainAccess da = null;
    /* TAddress is the domain class
    TAddress addr = null;
    /* Declare variables for determining if JTextField values have been changed by user
    String oldVal = null;
    String newVal = null;
    /* The following method is generated by the wizard when the frame was created
    protected void processWindowEvent(WindowEvent e) {
    super.processWindowEvent(e);
    if (e.getID() == WindowEvent.WINDOW_CLOSED) {
    System.exit(0);
    public void bfInit () throws Exception {
    /* To add code to be invoked when the user moves from one row to another, get the
    DataItemChangeManager from the RowSetInfo (via RowsetAccess) and add a
    DataItemChangeListener. The specific method we want to use here is rowsetCursorMoved
    which is invoked when the user moves from one row to another; the other methods are
    defined simply because the interface requires them.
    RowsetAccess ra = rowSetInfo1.getRowsetAccess();
    DataItemChangeManager dcm = (DataItemChangeManager)ra;
    dcm.addDataItemChangeListener(new DataItemChangeListener() {
    public void rowsetCursorMoved(RowsetCursorMovedEvent e) {
    rowSetInfo1_rowsetCursorMoved(e);
    public void dataItemAdded(DataItemAddedEvent e) {
    public void dataItemDeleted(DataItemDeletedEvent e) {
    public void dataItemRevoked(DataItemRevokedEvent e) {
    public void dataItemValueChanged(DataItemValueChangedEvent e) {
    /* This method was generated by the designer. See rowSetInfo1.addChangeListener(...) in jbInit
    above.
    void rowSetInfo1_rowsetPopulated(RowSetChangeEvent e) {
    try {
    /* When the rowset is populated, set the JTextField values based on the domain. See
    updateFields() below.
    updateFields();
    catch (Exception ex) {
    System.out.println("Error occurred while retrieving values");
    ex.printStackTrace();
    /* This method was added manually to track row navigation. See dcm.addDataItemChangeListener(...)
    in jbInit above.
    void rowSetInfo1_rowsetCursorMoved(RowsetCursorMovedEvent e) {
    try {
    /* When the user moves from one row to another, set the JTextField values based on the
    domain. See updateFields() below.
    updateFields();
    catch (Exception ex) {
    System.out.println("Error occured while assigning values");
    ex.printStackTrace();
    /* This method finds the values from each field of the column object by using the domain, then
    sets the values of the JTextFields respectively. It is invoked when the rowset is initially
    populated, and each time the user moves from one row to another.
    public void updateFields () throws Exception {
    /* Get DataItem for the Address column object and cast to DomainAccess for to prepare for
    getting and setting column value as domain.
    da = (DomainAccess)AddressrowSetInfo1.getImmediateAccess();
    /* Get the value of the attribute as a Domain and cast to DomainInterface.
    DomainInterface di = da.getValueAsDomain();
    /* null out addr. Otherwise, if the address column is null for a particular record, when
    the user navigates to the record with the null values, addr will retain the previous record's
    values. This ensures a clean slate.
    addr = null;
    /* Using DomainInterface allows us to cast the domain object to the specific Domain class for
    that type. So, cast the address attribute's value to TAddress, the class that
    represents the T_ADDRESS type created in the database. This provides getters and setters
    for each of the fields of the Object Type.
    if ( di instanceof TAddress ) {
    addr = (TAddress) di;
    /* If the above statement resulted in some non-null object assigned to addr, it is because
    one or more of the fields of the domain contained non-null values. Therefore, if addr is
    not null, get the values from each field of the domain and assign them to their
    respective JTextFields. Otherwise, set each JTextField to an empty string.
    if (addr != null) {
    textFieldStreet.setText(addr.getStreet());
    textFieldCity.setText(addr.getCity());
    textFieldState.setText(addr.getState());
    textFieldZipcode.setText(addr.getZipcode());
    else {
    textFieldStreet.setText("");
    textFieldCity.setText("");
    textFieldState.setText("");
    textFieldZipcode.setText("");
    /* If addr is null, after making sure the JTextFields are cleared, create a new TAddress
    object so that we have something to assign values to if the user edits the JTextFields.
    try {
    addr = new TAddress();
    catch (SQLException ex) {
    System.out.println("Error creating domain TAddress");
    ex.printStackTrace();
    /* The method below is invoked when the user navigates to textFieldStreet, textFieldCity,
    textFieldState, or textFieldZipcode. It's used just to find the value of the field when
    the user enters the field (the "before" value).
    void textField_focusGained(FocusEvent e) {
    Object obj = e.getSource();
    if (obj instanceof JTextField) {
    JTextField field = (JTextField)obj;
    oldVal = field.getText();
    /* The method below is invoked when the user navigates away from textFieldStreet, textFieldCity,
    textFieldState, or textFieldZipcode. It checks to see if the user changes the value of the
    field, and if so, updates the value of the address attribute.
    void textField_focusLost(FocusEvent e) {
    /* Find out the value of the JTextField now that the user is attempting to leave the field.
    Object obj = e.getSource();
    if (obj instanceof JTextField) {
    JTextField field = (JTextField)obj;
    newVal = field.getText();
    /* Compare the new value of the field ("after" value) to the "before" value captured
    in textField_focusGained above. If they are equal, we do nothing. If they are not equal,
    then the user must have changes the value in the field, and we have some work to do.
    if (!oldVal.equals(newVal)) {
    /* Since this same method is called regardless of which JTextField has been left, we find
    out which text field the user is leaving, and then set the value of the appropriate
    element of the addr domain.
    if (obj.equals(textFieldStreet)) {
    addr.setStreet(newVal);
    if (obj.equals(textFieldCity)) {
    addr.setCity(newVal);
    if (obj.equals(textFieldState)) {
    addr.setState(newVal);
    if (obj.equals(textFieldZipcode)) {
    addr.setZipcode(newVal);
    /* So, we've set the value of the appropriate element of the addr domain, but we have not
    "posted" those changes to the BC4J (middle-tier), so if we were to commit at this point
    our changes would not get saved to the database (because BC4J is not aware of these
    changes). The next step is to notify BC4J of the changes.
    try {
    da.setValueAsDomain(addr);
    catch (InvalidDataException ex) {
    System.out.println("Invalid Data assigned to TAddress");
    ex.printStackTrace();
    /* Clear out the oldVal and newVal variable so we are ready to track more changes.
    oldVal = null;
    newVal = null;
    }-- Brian

  • 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

  • How to add row in multiple view object based on common entity object.

    Hi ,
    I have
    Jdeveloper version - 10.1.3.3.0
    Oracle Database - 11g R2
    I have a situation where i have to show data from one table in three adf tables on jsf page depending on a flag value in a column in table. For this purpose i have done the following steps
    a) Created an entity object on the database table .
    b) Created three view objects on this entity object and edited the view object's SQL and included the where clause
                       WHERE  A.USER_PERSONAL_NO = :P_USER_PERSONAL_NO AND
                           A.AUTH_TYPE = 'LF'
                       The auth_type cloumn decided in which view object the data will be shown
    Now, when i query the data from database by executing the query of these view objects the data is shown correctly in all three view objects. Till here there seems every thing ok
    Now , i have to provide the logic to add records in the adf tables for this i have provided add button in action facet of all three tables which are binded to methods in managed bean,
    when i add a record in a adf table by add button the new row which is created is shown in all three tables . I cant understand why this is happening , please help me to solve this problem.
    How can i make it possible so that the record appears only in that adf table in which the record is added.
    The method for adding record is
                Row rw = currentAM.getWfRecommAuths().createRow();
                rw.setAttribute("UserPersonalNo",this.getQuery_personal_no().getValue());
                rw.setAttribute("AuthPersonalNo","");
                rw.setAttribute("AuthType","LX");
                currentAM.getWfRecommAuths().last();
                currentAM.getWfRecommAuths().insertRow(rw);
               Please help , thanks in advance.

    Hi,
    have a look at polymorphic view objects
    http://download.oracle.com/docs/cd/E21764_01/web.1111/b31974/bcadvvo.htm#CEGDCCCB
    Frank

  • Keep the record in the view object if deletion failed.

    I have a view object which is based on the entity object, when I am trying to delete a row it failed because it has a child record associate with. I know the row is not delete from the database, but the record is deleted fromt the view.
    How to keep the record in the View object if delete failed?

    Hi,
    the row is not delete from the database,refresh the view . re-execute query and the view show the row

  • All the properties are not displying for the View Object

    i my one of the view Object it is only showing the properties
    Values
    Lable
    Render values
    I want to use text box (Input box )...but it is not showing in the property window
    why it is not showing the all the properties for the that view Object.
    Is it a read only view object ? if so then how to change it

    This question is confusing.
    You talk about properties, suggesting attribute properties are not showing up in the view object editor. Then you talk about a read-only view object, which suggests you talk about a running application?
    Normally a view object is updatable when it is based on an entity object and when on the entity object tab of the view object editor (the page in which you select the entity object) the updatable checkbox has been checked.
    But being updatable as such is not why attributes would not show up in a screen.
    Can you be more specific, and also tell us what JDeveloper version you are working with?
    Jan Kettenis

  • How to add a new table or view in the view object

    hello,every one.
    I wanna add a new table or view in the view object's query statement.
    when the table or view not in the where clause,the query statement is working fine.
    If they in the where clause,I got the "java.lang.NullPointerException".
    who can help me
    thank you very much

    thank you for your reply
    I wanna extend the VO
    oracle.apps.pay.selfservice.payslip.US.server.PayPayslipGetPersonDetail
    the original sql is:
    SELECT ppf.person_id,
    FROM per_people_f ppf,
    per_assignments_f paf,
    pay_assignment_actions paa
    where paa.assignment_action_id = :1 AND paf.assignment_id = paa.assignment_id AND SYSDATE BETWEEN paf.effective_start_date AND paf.effective_end_date AND paf.person_id = ppf.person_id
    I wanna extend:
    SELECT ppf.person_id, pay_v.element_name,pay_v.assignment_action_id
    FROM per_people_f ppf,
    per_assignments_f paf,
    pay_assignment_actions paa,
    pay_run_results_v pay_v
    where paa.assignment_action_id = :1 AND paf.assignment_id = paa.assignment_id AND SYSDATE BETWEEN paf.effective_start_date AND paf.effective_end_date AND paf.person_id = ppf.person_id
    pay_v.assignment_action_id =paa.assignment_action_id
    if the pay.v in the where clause. I will got the exception. whereas,it's works fine.

  • How to create View Object with Multiple Updatable Entity Objects

    I want both the entities in the view object to support creating new rows but when i give create insert it allows to insert only on the parent and not the child. I found this link
    http://docs.oracle.com/cd/E21043_01/web.1111/b31974/bcadvvo.htm#CEGCAJCI which overrides the exiting classes. but i would like to do it declarative . Is there any other way to do it?
    I am using Jdeveloper 11g version 2.
    Thanks in advance,
    Rakesh

    But when i tried to add a new row it showed this error
    oracle.jbo.AttrValException: JBO-27014: Attribute LookupTypeId1 in FoundationModuleAM.VikLookupTypeBaseVO is required.
         at oracle.jbo.server.JboMandatoryAttributesValidator.validate(JboMandatoryAttributesValidator.java:224)
         at oracle.jbo.server.EntityDefImpl.validate(EntityDefImpl.java:3095)
         at oracle.jbo.server.EntityCache.validate(EntityCache.java:3599)
         at oracle.jbo.server.EntityImpl.validateEntity(EntityImpl.java:2285)
         at oracle.jbo.server.EntityImpl.validate(EntityImpl.java:2464)
         at oracle.jbo.server.DBTransactionImpl.validate(DBTransactionImpl.java:4515)
         at oracle.insurance.viking.foundation.model.common.VikingDBTransactionImpl.validate(VikingDBTransactionImpl.java:46)
         at oracle.jbo.server.DBTransactionImpl.commitInternal(DBTransactionImpl.java:2008)
         at oracle.jbo.server.DBTransactionImpl.commit(DBTransactionImpl.java:2352)
         at oracle.insurance.viking.foundation.model.common.VikingDBTransactionImpl.commit(VikingDBTransactionImpl.java:37)
         at oracle.adf.model.bc4j.DCJboDataControl.commitTransaction(DCJboDataControl.java:1590)
         at oracle.adf.model.binding.DCDataControl.callCommitTransaction(DCDataControl.java:1415)
         at oracle.jbo.uicli.binding.JUCtrlActionBinding.doIt(JUCtrlActionBinding.java:1428)
         at oracle.adf.model.binding.DCDataControl.invokeOperation(DCDataControl.java:2169)
         at oracle.jbo.uicli.binding.JUCtrlActionBinding.invoke(JUCtrlActionBinding.java:731)
         at oracle.jbo.uicli.jui.JUActionBinding.actionPerformed(JUActionBinding.java:193)
         at oracle.jbo.uicli.controls.JUNavigationBar.doAction(JUNavigationBar.java:412)
         at oracle.jbo.jbotester.NavigationBar.doAction(NavigationBar.java:112)
         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)

  • How to get the view Object in UserDefined Action

    Hi  All,
       Any body tell me how to get the view object , like the view object avilable in the wdDoModifyView() method as parameter.
    I have requirement like, i want to change the , no of rows displaying in the table should be changed at the runtime based onthe no of rows  selected in the dropdown box.
    The action which i created will be assigned to that dropdown box, on select of the available option, i will get the view object and change the properties of the "maxrows" of the table .
    so for getting the view object in the  the Action methods tell me what is the procedure for getting the current view object.

    Hello Vishal,
    Simply create a value attribute (say rowCount) of type 'integer' and bind it to the 'visibleRowCount' property of your table. Then, in the actionHandler get the value from the UI element (in your case, I guess it is drop down) and set it to the attribute 'rowCount' like this.
    wdContext.currentContextElement.setRowCount(
        wdContext.current<nodeElement>.set<AttributeBound toDropDown>);
    Bala

  • How to retrieve the java object in a proxy service in osb -- Plz help

    Hi all,
    I have a singleton java class which runs whenever the weblogic server gets started and store the output in its object. I need to access this java object from a proxy service in osb.
    We tried using java call out and retrieved that object but we couldn't know how to parse that object into XML.
    We are not sure of using the java call out in osb to solve this purpose because whenever we use a java callout, that particular java code will run which is not the case of singleton class.
    So kindly help us how to retrieve the java object which holds the output without running the java code every time because its already run and holding the output in its object.
    Regards
    Prabhu

    here the doc http://download.oracle.com/docs/cd/E13159_01/osb/docs10gr3/userguide/context.html#wp1106656
    but I guess you are already at the stage of getting a POJO in a first Java Callout and passing the POJO to a second Java Callout, which should then return it to OSB as a XMLObject.
    My recommendation is to write a Java function which returns a XMLObject and uses a XMLCursor to populate it with the values of the POJO.
    An XMLObject returned to the OSB is automatically transformed in a "XML" variable (which in reality is represented as a XMLObject in the Pipeline context)
    Here some code sample:
    http://www.javamonamour.org/2010/09/how-to-create-xmlobject-using-xmlcursor.html

  • How to populate the view object programetically

    Hi all,
    Is there any way to populate the records present in my backing bean. In my beacking Bean there is an array list how can i assign the array list values to the View Object.
    Thanks in Advance.,
    Mohan Krishna m.,

    It's something like this that are you finding ?
    populateViewObject(ViewObject vo, ArrayList<MyBean> arrayBean){
    Ror myRow = null;
    for(MyBean my : arrayBean){
    myRow = vo.createRow();
    myRow.setProperty("<PropertyName>", my.getPropertyName())
    //Another Properties ...
    vo.insertRow(myRow);
    }

  • Replace default table sort with order by on the view object

    The Jdeveloper help for af:table says:
    If the underlying model is not a CollectionModel , the Table automatically examines the actual data to determine which properties are sortable. Any column that has data that implements java.lang.Comparable is sortable. This automatic support cannot be nearly as efficient as coding sorting directly into a CollectionModel (for instance, by translating the sort into an "ORDER BY" SQL clause), but is sufficient for small data sets.
    I have a database table with varchar2 columns that can contain string, date or number values. So in the af:table I want to sort the columns either in string, date or number order.
    I tried creating a sort listener and in that listener set the view object order by clause and execute the query, but it does not affect the row order - it is always sorted as a string. I assume that the collection is doing its sort after I do the query, and overwriting the query order. I have tried disabling the sort in the listener by setting the sortcriteria to null but it has no effect.
    Can anyone suggest how to stop the default sort re-ordering the rows, or else how to code sorting directly into the CollectionModel as suggested in the help.
    Hugh Nelson

    By running in debug I discovered that when you click on a column heading to sort by the column values it actually sets the order by clause on the view object and executes a query. The help says that the default sorting is not as efficient as setting the order by clause - perhaps the help is out of date because default sorting does set the order by clause.
    This means that you cannot do a column sort on a transient attribute. The attribute being sorted on must exist in the table/query.
    The easiest solution is to override the setOrderByClause method on the view object. The string parameter is the column to order by eg "COLUMNA". If this column holds date values I can change it to something like "TO_CHAR(TO_DATE(COLUMNA,'DD-MON-YYYY'),'YYYYMMDD')". For numbers I do "LPAD(COLUMNA,10,'0')".
    This works OK.
    Hugh Nelson

  • How to set Where clause in the View Object of the MessageChoice ?

    Hi,
    How to set Where clause in the View Object of the
    MessageChoice ?
    Example:
    <bc4j:rootAppModuleDef name="EdEscolaCampusView1AppModule"
    definition="ed00050.Ed00050Module"
    releaseMode="stateful" >
    <bc4j:viewObjectDef name="EdEscolaCampusView1" >
    <bc4j:rowDef name="CreateEdEscolaCampusView1" autoCreate="true" >
    <bc4j:propertyKey name="key" />
    </bc4j:rowDef>
    </bc4j:viewObjectDef>
    <bc4j:viewObjectDef name="ListaTipLocalView1"
    rangeSize="9999">
    </bc4j:viewObjectDef>
    </bc4j:rootAppModuleDef>
    </bc4j:registryDef>
    messageChoice declaration:
    <bc4j:messageChoice name="SeqTipoLocalCampus"
    attrName="SeqTipoLocalCampus"
    prompt="Local do Campus">
    <contents>
    <bc4j:optionList attrName="SeqTipoBasico"
    textAttrName="NomTipoBasico"
    voName="ListaTipLocalView1"/>
    </contents>
    </bc4j:messageChoice>
    I would like set where clause of ViewObject, with dinamic parameters (using attribute1 = :1), before populate messageChoice.
    thanks...
    Danilo

    Hi Andy,
    I try set a where clause using the message:
    Set where Clause parameter using UIX , but my UIX Page have 2 messageChoice's of different ViewObject's, then I need implement this Java Class:
    //Nome da Package da Tela Detail
    package br.com.siadem.siaed.ed00050;
    // Importa as Bibliotecas necessárias
    import oracle.jbo.ViewObject;
    import oracle.jbo.ApplicationModule;
    import oracle.jbo.client.Configuration;
    import oracle.cabo.servlet.BajaContext;
    import oracle.cabo.servlet.Page;
    import oracle.cabo.servlet.event.PageEvent;
    import oracle.cabo.servlet.event.EventResult;
    import oracle.cabo.data.jbo.servlet.bind.*;
    import oracle.cabo.ui.data.BoundValue;
    import oracle.cabo.ui.data.DataBoundValue;
    import javax.servlet.http.HttpServletRequest;
    import br.com.siadem.siaed.util.*;
    import javax.servlet.http.Cookie;
    import oracle.cabo.data.jbo.def.NestedAppModuleDef;
    import oracle.cabo.data.jbo.def.ViewObjectDef;
    import oracle.cabo.data.jbo.def.AppModuleDef;
    // Classe que configura os parametros para a execução da Query,
    // utilizando variáveis de Sessao
    public class FunPreQueryLista
    public static EventResult FunConfiguraQuery(BajaContext context, Page page, PageEvent event) throws Throwable
    // TrataDadosSessao - Classe utilizada para retornar os valores das variáveis de sessão genéricas
    // Ex: CodCliente, CodMunicipio etc...
    TrataDadosSessao varDadosSessao = new TrataDadosSessao();
    // 1o. Parametro Configurado - Através da classe TrataDadosSessao, utilizando um método Get
    // <alterar>
    String valor1 = varDadosSessao.getCodCliente();
    String valor2 = varDadosSessao.getCodMunicipio();
    //Cria o objeto que retorna o ApplicationModule
    ApplicationModule am = ServletBindingUtils.getApplicationModule(context);
    // Início das Configurações da Query da Lista
    //Cria o objeto que retorna o view object da lista desejada
    //alterar
    ViewObject TipoLocal = am.findViewObject("ListaTipoLocalView1");
    //Configuração dos parametros definidos na query do view Object
    //alterar
    TipoLocal.setWhereClauseParam(0,valor1);
    TipoLocal.setWhereClauseParam(1,valor2);
    // Executa a Query
    TipoLocal.executeQuery();
    // Fim das Configurações da Query da Lista
    // Início das Configurações da Query da Lista
    //Cria o objeto que retorna o view object da lista desejada
    //alterar
    ViewObject TipoDestLixo = am.findViewObject("ListaDestinoLixoView1");
    //Configuração dos parametros definidos na query do view Object
    //alterar
    TipoDestLixo.setWhereClauseParam(0,valor1);
    TipoDestLixo.setWhereClauseParam(1,valor2);
    // Executa a Query
    TipoDestLixo.executeQuery();
    // Fim das Configurações da Query da Lista
    // Retorna o Resultado para a Página
    return new EventResult(page);
    The code works very well...
    And, I'm sorry for my two repost's in UIX Forum about this in a few time.
    Thank very much...
    Danilo

  • Issue in attaching dynamic Query to the View Object

    Hi,
    We are having a View Object attached to the JRAD page.
    The View object is build thru as Expert mode. There is no any CDATA
    SQLQUERY stored in the VO.xml file.
    We are building the query dynamically and attaching it to the VO in
    RUNTIME.
    The code is as below
    // getFcstQuery() is method used to return the dynamic query
    String query = getFcstQuery();
    // Setting the Query to View Object
    getViewDef().setQuery(query);
    setQuery(query);
    The JRAD page has sorting option on 5 columns. so when a sorting is
    done the data are interchanged between the clients.
    For example how the query will be build id
    Say for the first user the query will be as
    "select ename,eno,dno from emp where eno=1 "
    for the second user the query may be
    "select ename,eno,dno from emp where eno=2 "
    Now if both the user hit the sorting on any of the column the data is
    interchagned between this both users.
    Please provide solution if possible.
    Thanks in advance
    Balamohan

    Hi Steve,
    We are using 5 tables in building the query.
    Say,
    1) summary
    2) transactions
    3) transactions_history
    4) rules
    5) rules_temp
    but only 2 tables are used at a time
    for read only we are using
    summary table
    for edit only mode we are using
    1) transactions and
    2) rules
    tables
    for edit and recalculate mode we are using
    1) transactions and
    2) rules_temp
    tables
    for one more condition we are using
    1) transactions_history and
    2) rules
    tables
    From all the above combination we are getting 5 columns. All the columns are defined the above combination tables. So using the same region. based on the conditions the combination of tables will change.
    Becoz of this we are building the query dynamically.
    Thanks
    Balamohan

  • Fm or metod that retrieve the lock object name from the table name

    HI ALL,
    there is FM or method that retrieve the lock object name from the table name ?
    Best regards
    Nina

    CALL FUNCTION 'ENQUEUE_REPORT'            
    EXPORTING                                
    gclient                     = sy-mandt   
    gname                       = 'RCTMV'         "Table Name
      GTARG                       = ' '       
      GUNAME                      = SY-UNAME  
    IMPORTING                                 
      number                      =           
      SUBRC                       =           
      TABLES                                  
        enq                         =  lt_seqg3
    EXCEPTIONS                               
       communication_failure       = 1        
       system_failure              = 2        
       OTHERS                      = 3

Maybe you are looking for

  • How do you configure vi to output the mean from instantane​ous data?

    Hi, I am trying to configure my vi to calculate the mean as the data is being read by the computer. I have tried storing the data in an array and then using the statistics option to calculate the arithmentic mean to no success. I have the vi set up t

  • How to create an expense report, with amounts calculation, including currency conversion ?

    Hello, I would like to create an expense report like the one shown below. As far as I could try the PDF forms editor, I don't understand how we can build such report. Furthermore, I would like to know how we can make easy calculation in the report ?

  • How to Save Stationery in Apple Mail?

    I have created a greeting card, and saved as JPG. I formatted a message, with subject line etc. and Saved as Stationery. The option appears as a thumbnail in Custom Stationery, but when I click, it is not applied as Stationery, and the thumbnail wind

  • Canon .cr2 files

    I have a Canon Powershot G16 that shoots RAW images but puts them in a .CR2 format.  I am trying to determine if Aperture definitely will read this type of file or not. Can anyone tell me if it will? Thanks.

  • Network assistant security password??

    sorry to be a bother, i found my G3 all in one at a thrift store. did a clean resinstall of OS 9.2.2. i am having trouble connecting to my home network. when i try to access the network assistant security ask for a password and says consult the manua