How to manage lifespan of Entity Objects?

Greetings,
I am familiar with OA Framework, and I've already done several projects.
However, I am going to start a project where Entity Objects will be needed, and I'm kinda confused.
So I have a few questions:
A) If I execute PL/SQL DML directly on the database, is there some auto-sync features that I need to use?
..or do I have to manually update the cache via Manual Cache Iteration / findPrimaryKey / etc ...
B) Is it possible to to preserve cached EOs between pages?
..The docs say that re-executing a VO will "apply" the cached EOs, and I'm worried that unnecessary commits will happen.
C) How are Entity Objects related to the OADbTransaction?
If an Entity gets applied to its View Object, can I still "rollback" the changes at the Transaction level?
Thanks in advanced for your wisdom !

Hi,T Schneider
Thank you for your appropriate advice.
I reviewed the math textbook of my son immediately.
PMReal newWidth = newLength * oldRect.Width() / oldLength;
PMReal newHeight = newLength * oldRect.Height() / oldLength;
It works perfectly.
I just expected PMRect might have something pythagorean methods...
I am a true idle man.
Thanks.
Satoru Fujimori

Similar Messages

  • How to intercept update on entity object using bc4j

    Hi all,
    I need to intercept a user from updating a particular entity object and create a new entity instead. I have a particular row in a database table that has a primary key with special meaning. If a user attempts to update this row, I want to automatically create a new row in the table with the information they entered and leave the original row unmodified. Any suggestions on how to do this at the entity layer?
    Thanks
    Mike

    Hi Sung,
    I've created 2 Entity Objects, named TestEo and OtherEo. The logic I've included is as follows: Before posting data for TestEo to the database (thus as part of the prepareForDML), I create a new instance of OtherEo, using the createBlankInstance method exposed on OtherEoDefImpl.
    However, the instance thus created ends up in a STATUS_UNMODIFIED, regardless of locking mode (I've managed to eliminate the locking mode as an issue).
    Could you give me an idea of where I'm going wrong? I've attached the prepareForDML() (with diagnostic msgs) and createBlankInstance() methods below.
    TestEoImpl.prepareForDML()
    protected void prepareForDML(int p0, TransactionEvent p1)
    switch (this.getDBTransaction().getLockingMode())
    case DBTransaction.LOCK_OPTIMISTIC:
    System.out.println("Locking mode: LOCK_OPTIMISTIC");
    break;
    case DBTransaction.LOCK_PESSIMISTIC:
    System.out.println("Locking mode: LOCK_PESSIMISTIC");
    break;
    // TODO: Override this oracle.jbo.server.EntityImpl method
    super.prepareForDML(p0, p1);
    OtherEoDefImpl otherEoDef = (OtherEoDefImpl) EntityDefImpl.findDefObject(
    "testapp.OtherEo");
    System.out.println("Entity Class: " + this.getClass().getName());
    switch (this.getEntityState())
    case EntityImpl.STATUS_DEAD:
    System.out.println("Entity State: STATUS_DEAD");
    break;
    case EntityImpl.STATUS_DELETED:
    System.out.println("Entity State: STATUS_DELETED");
    break;
    case EntityImpl.STATUS_INITIALIZED:
    System.out.println("Entity State: STATUS_INITIALIZED");
    break;
    case EntityImpl.STATUS_MODIFIED:
    System.out.println("Entity State: STATUS_MODIFIED");
    break;
    case EntityImpl.STATUS_NEW:
    System.out.println("Entity State: STATUS_NEW");
    break;
    case EntityImpl.STATUS_UNMODIFIED:
    System.out.println("Entity State: STATUS_UNMODIFIED");
    break;
    EntityImpl otherEo = otherEoDef.createBlankInstance(getDBTransaction());
    System.out.println("Entity Class: " + otherEo.getClass().getName());
    int state = otherEo.getEntityState();
    switch (state)
    case EntityImpl.STATUS_DEAD:
    System.out.println("Entity State: STATUS_DEAD - " + state);
    break;
    case EntityImpl.STATUS_DELETED:
    System.out.println("Entity State: STATUS_DELETED - " + state);
    break;
    case EntityImpl.STATUS_INITIALIZED:
    System.out.println("Entity State: STATUS_INITIALIZED - " + state);
    break;
    case EntityImpl.STATUS_MODIFIED:
    System.out.println("Entity State: STATUS_MODIFIED - " + state);
    break;
    case EntityImpl.STATUS_NEW:
    System.out.println("Entity State: STATUS_NEW - " + state);
    break;
    case EntityImpl.STATUS_UNMODIFIED:
    System.out.println("Entity State: STATUS_UNMODIFIED - " + state);
    break;
    OtherEoDefImpl.createBlankInstance()
    public EntityImpl createBlankInstance(DBTransaction p0)
    // TODO: Override this oracle.jbo.server.EntityDefImpl method
    return super.createBlankInstance(p0);
    Output - Test 1
    Locking mode: LOCK_OPTIMISTIC
    Entity Class: testapp.TestEoImpl
    Entity State: STATUS_NEW
    Entity Class: testapp.OtherEoImpl
    Entity State: STATUS_UNMODIFIED - 1
    Output - Test 2
    Locking mode: LOCK_PESSIMISTIC
    Entity Class: testapp.TestEoImpl
    Entity State: STATUS_NEW
    Entity Class: testapp.OtherEoImpl
    Entity State: STATUS_UNMODIFIED - 1

  • How can we create an entity object using multiple tables?

    Hi All,
    I'm a newbie to OAF.
    I'm trying to create a simple page using OAF.
    While creating Entity object, there is an option to add the database objects from which we can create our Entity Object.
    There we can enter only one database object.
    If suppose I need to create a Entity object by using mutiple data base objects, how can I add other database objects?
    Is there any option for multiple selection of database objects there?
    Thanks in Advance

    User,
    a). You should use the [url http://forums.oracle.com/forums/forum.jspa?forumID=210]OA Framework Forum for this question.
    b). Entity objects always correspond to a single table. I think you want to create a View object instead.
    c). Really, you want to be using the OA Framework forum.
    John

  • How to clear cache in entity object

    Hi All
    I am new to ADF .we r using JDEV 11g. I have a requirement where i am entering values for one id column.
    After entering values to ID column and clicked on save it checks with the data base whether that id exists or not. if exist it throws error saying id is existing.
    if i modify and enter new id which is not existing and click on save it is still showing the same error.
    I am pasting the code plz let me know where i exactly need to modify
    public void checkForPreviousPrimaryIdRecords(String Label,
    String LabelType)
    if (this.getSerialId() == null)
    SearchExistingPrimaryIdsVOImpl previousPrimaryRecords =
    (SearchExistingPrimaryIdsVOImpl) getSearchExistingPrimaryIdsVA().getViewObject();
    String[] vcNames =
    { "ByLabelAndLabelType" };
    ((ViewCriteriaManager) previousPrimaryRecords.getViewObject()).setApplyViewCriteriaNames(vcNames);
    ((SearchExistingPrimaryIdsVOImpl) previousPrimaryRecords.getViewObject()).setbindLabel(Label);
    ((SearchExistingPrimaryIdsVOImpl) previousPrimaryRecords.getViewObject()).setbindLabelType(LabelType);
    previousPrimaryRecords.executeQuery();
    while (previousPrimaryRecords.hasNext())
    Row altIdRow = previousPrimaryRecords.next();
    String reusableFlag =
    (String) altIdRow.getAttribute("ReusableFlag");
    * This is place where the error is coming i need to modify the cache values please suggest me */
    if (!ONE.equals(reusableFlag))
    ResourceBundle bundle =
    BundleFactory.getBundle("oracle.apps.pas.common.model.ErrorWarningMsgBundle");
    throw new JboException(bundle.getString("PREVIOUS_PRIMARY_ID_NOT_REUSABLE"),"PREVIOUS_PRIMARY_ID_NOT_REUSABLE",null);
    else
    String processedFlag =
    (String) altIdRow.getAttribute("ProcessedFlag");
    if (!ONE.equals(processedFlag))
    ResourceBundle bundle =
    BundleFactory.getBundle("oracle.apps.pas.common.model.ErrorWarningMsgBundle");
    throw new JboException(bundle.getString("PREVIOUS_PRIMARY_ID_NOT_SHIPPED"),"PREVIOUS_PRIMARY_ID_NOT_SHIPPED",null);
    }

    Hi,
    Code to be written in EntityImpl class:
                     DBTransactionImpl2 dbTransaction = (DBTransactionImpl2) this.getDBTransaction();
                if (dbTransaction.isDirty())
                    Iterator dirtyItr = this.getEntityDefinition().getAllEntityInstancesIterator(dbTransaction);
                    while (dirtyItr.hasNext())
                        Object obj = dirtyItr.next();
                        if (obj instanceof EntityImpl)
                            EntityImpl entity = (EntityImpl) obj;
                            byte entityState = entity.getEntityState();
                            switch (entityState)
                                case Entity.STATUS_DELETED:
                                    entity.refresh(Entity.REFRESH_WITH_DB_FORGET_CHANGES);
                                    break;
                                case Entity.STATUS_MODIFIED:
                                    entity.refresh(Entity.REFRESH_UNDO_CHANGES);
                                    break;
                                case Entity.STATUS_NEW:
                                    entity.refresh(Entity.REFRESH_FORGET_NEW_ROWS);
                                    entity.refresh(Entity.REFRESH_REMOVE_NEW_ROWS);
                                    break;
                    ((DBTransactionImpl2) this.getDBTransaction()).clearEntityCache(this.getEntityDefinition().getFullName());
                }Edited by: Raguraman on Dec 1, 2011 12:49 PM

  • How to create Entity object for Non Database Object.

    Friends,
    I have a requirement something like, I will be getting some huge amount of data from external system via CORBA, I have to display the data in jsff page in <af:table>. My requirement is If User updates any of the row I need to identify what are all the rows user updated and Need to invoke again a CORBA call for only UPDATED Rows.
    Basically here, I am not dealing anything with the Database, I assume using Entity we can find out a status of the row whether the row is updated/deleted/created .
    How can I create an Entity object in this case.
    Any help will be highly appreciated !!!
    Thanks

    The basics steps are described here http://download.oracle.com/docs/cd/E14571_01/web.1111/b31974/bcadveo.htm#sm0328
    and here http://download.oracle.com/docs/cd/E14571_01/web.1111/b31974/bcadvvo.htm#sm0341
    You need to change the underlying data source from pl/sql to meet your requirements (CORBA).
    Timo

  • Entity object attribute with a list of objects

    Does anyone know how one sets up an entity object that has an attribute with a list of objects as the type? (assuming that's supported)
    as in:
    CREATE TYPE phones AS VARRAY(10) OF varchar2(10);
    Create table suppliers (supcode number(5),
    Company varchar2(20),
    ph phones);
    The SOA Suite in jDeveloper (new Entity Object/attributes etc) has an ARRAY that can point to REF or OBJECT. Neither work. When I try to Create DB Object later from the Entity Object I've created I get an invalid type.

    What you suggested about "validation codes on the VO" is not written on the ADF Documentation.
    I try to blindly/strictly follow best practices (particularly on Validations, using Declartive and/or built in validators) on most ADF documentation and blogs but there are many scenarios on coding some large ADF projects that I think must veer away from the best practices stated on the documentation or maybe add new rules on the documentation depending on how complex an ADF project would be.
    I religiously followed best practices stated on the documentation to use Entity and Attribute Validators when performing validations. What I did was i had created lots of Custom Validators (by implementing JboVAlidatorInterface interface) for each of the attributes on an Entity Object that need validated. So those validator is valid only for one attribute, its not reusable. And those validation codes either have reference to a ViewObject or call some PL/SQL procedure. So at some point are codes became messy.
    Ultimately the whole project became harder to manage when the codes became large. Now I am trying to refactor the whole application by separating it into project/package and I am hoping to do it with little Re-coding as possible.
    Hope to get your opinion on this one.
    regards,
    Anton

  • Entity object editor

    i seem to be confused but i cannot access the entity object editor. i am using adf faces and oracle toplink, and from all the examples and tutorials i see online, i cannot access it the same way. how do i reach the entity object editor?

    i am really new to jdev and i used this tutorial:
    http://www.oracle.com/technology/obe/obe1013jdev/masterdetailedit_adftoplink/endtoend_toplink_adffaces.htm

  • 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

  • How to get the values of managed metadata columnn through object model

    Hi,
    I need to read the values from a managed metadata column, which is set to display entire path.
    Eg. My value looks like
    Critical:Important:Interesting:Routine:Not Evaluated
    without hardcoding these values, can i find which level of child has been chosen.
    if its not evaluated, i should find like last child like that..
    any way of doing that?
    Aruna

    Hi,
    thanks for the above reply.
    i got a new requirement as,  following is my managed metadata structure user selects the values from the below structure. i need to find the matching items with another list of same structure. the condition for matching is, if the user selects All,
    in the otehr list if the value in the region column equals any of the values in the structure below All like ema, denmark,nordborg is considered to be matched. if the user selects Denmark then the list contains denmark, nordborg and office is matched. means
    parent and its child contents are matched if the parent is chose. if the child is chosen only the exact value from other list(office==office in otehr list) is considered to be matched. how can i achieve it through object model coding?
    Aruna

  • How to change Font Size of Object Explorer in "SQL Server Management Studio"

    Dear Team,
    "SQL Server Management Studio" is a fantastic IDE for the database.
    There are so many customization options available but one thing many users missing is that " How to change Font Size of Object Explorer?"
    Can you please accumulate this feature in IDE ASAP?
    Many Thanks,
    Bhavesh

    Its there
    Go to Tools -> Options
    Then under Environment you've fonts and colors tab where you can specify a higher font size.
    Please Mark This As Answer if it solved your issue
    Please Vote This As Helpful if it helps to solve your issue
    Visakh
    My Wiki User Page
    My MSDN Page
    My Personal Blog
    My Facebook Page

  • How to Insert the System Date in the entity object

    Hello,
    I have the problem - in entity object I have one attribute as 'Created_Date' in the <entity>Impl.java,
    to this attribute I want to assign the value as a System Date. Could someone please let me know how to do this?
    Thanks

    Hint for all who are trying another solution. You might think it's easier to assign a SystemDate using this method:row.setDate(new Timestamp(System.currentTimeMillis())); But unfortunately this solution has a real gotcha! Doing this you are writing an Attribute with a precision of milliseconds. Unfortunately the SQL-Date type can hold only full seconds. So this solution sometimes leads to the Problem that BC4J complains that "someon else has changed the row" (in reality the database has simply stripped off the seconds).
    Even if you are trying to convert the Timestamp to an oracle.jbo.domain.Date like this Date myDate = new Timestamp(System.currentTimeMillis()));
    row.setDate(myDate); you will not be able to solve the problem. 'myDate' still holds the milliseconds, it only doesn't display them. You might still discover that BC4J complains for modified rows.
    So the solution given by Faraz is definitively the best solution, even if it looks complicated, as it strips off the milliseconds.

  • How do I make a view object containing two entity objects updatable?

    I have a view object that contains attributes from two entity objects. The query looks like this
    SELECT AplCfgPartyEO.ID,
    AplCfgPartyEO.ID_HRM_BRW_JOB,
    HrmBrwJobEO.CREATED_BY,
    HrmBrwJobEO.CREATION_DATE,
    HrmBrwJobEO.ID AS ID1,
    HrmBrwJobEO.ID_HRM_BAS_JOB_TYPE,
    HrmBrwJobEO.JOB_NO,
    HrmBrwJobEO.MODIFIED_BY,
    HrmBrwJobEO.MODIFY_DATE,
    HrmBrwJobEO.ORIGIN,
    HrmBrwJobEO.PICTURE
    FROM APL_CFG_PARTY AplCfgPartyEO, HRM_BRW_JOB HrmBrwJobEO
    WHERE AplCfgPartyEO.ID_HRM_BRW_JOB = HrmBrwJobEO.ID
    My problem is that I am only allowed to update the attributes from the AplCfgPartyEO entity object while the attributes from the HrmBrwJobEO entity object become read only. I want to be able to update all of the attributes how do I do that?

    If someone will read this later I can inform them that I am using Studio Edition Version 11.1.1.0.2 at the moment. Thanks Chris, your answer solved my problem but I was a little surprised though that it wasn´t updatable by default.

  • How I configure a default value in an entity object?

    Hi,
    1:how I configure a default value in an entity object?
    attribute type: DATE
    I want to set the current date
    ...thanks

    Override the create() action in your entity object implementation:
    protected void create(AttributeList attributeList)
    * This method should be subclassed to supply programmatic default values to
    * various attributes of a new Entity Object. For example, to create a sequence.
    * Instances of subclasses should call super.create() before performing any operations.
    System.out.println("create(AttributeList attributeList) - start");
    Date datSysdate = ( oracle.jbo.domain.Date) Date.getCurrentDate();
    super.create(attributeList);
    // set the default to today...
    setHiredate( datSysdate );
    System.out.println("create(AttributeList attributeList) - end");
    }

  • Managing Entity Object and PL/SQL transactions

    Hi,
    I have requirement to use entity objects and PL/SQL API in the same transaction.
    First the data is created in the entity object and then API is called to do some validations on the data created through entity object.
    I am not able to fetch the rows created by the entity object in the PL/SQL API until I issue a commit before calling the API.
    Can anyone suggest me how to get the data in PL/SQL API which was created by the entity object without commit. As I want to have a commit only after API returns true.
    Thanks in advance

    Override the beforeCommit method of the main entity object of your page.
    The commit will only take place if the PLSQL does not throw any errors.
    See example below:
    public void beforeCommit(oracle.jbo.server.TransactionEvent e) {
    methodToCheckUsingPLSQL();
    super.beforeCommit(e);
    private void methodToCheckUsingPLSQL() {
    try {
    String sql =
    "BEGIN check_my_entity(p_id => :1" +
    ", x_return_status => :2" +
    ", x_return_msg => :3); END;";
    OracleCallableStatement stmt =
    (OracleCallableStatement)getDBTransaction().createCallableStatement(sql,
    DBTransaction.DEFAULT);
    // Rebind parameters
    stmt.setNUMBER(1, getId());
    stmt.registerOutParameter(2, Types.VARCHAR); //x_return_status
    stmt.registerOutParameter(3, Types.VARCHAR); //x_return_msg
    stmt.executeUpdate();
    String returnStatus = stmt.getString(2);
    String returnMsg = stmt.getString(3);
    if (!"SUCCESS".equals(returnStatus)) {
    throw new OAException(returnMsg);
    } catch (Exception e) {
    throw new OAException("Error during methodToCheckUsingPLSQL. " +
    e.getMessage());
    Regards,
    Jeroen Kloosterman

  • Entity Object's "addNewRow" Permission, how to implement?

    Hi,
    this is a generic question about an implementation strategy to be followed for ADF Authorization.
    I've been researching the definition of permissions at the entity object level, and successfully tested the 3 permission targets available: read, update, removeCurrentRow.
    However, I'd actually need the full set of permission targets for CRUD operations, which means that ADF lacks an "addNewRow" to secure row creation on EOs.
    What should be the strategy to implement that?
    Is it a planned feature so waiting till, say, 11g Release 2 should bring it to the table, or has it been left out by design and thus it just won't be added? In the latter case, how to actually implement it?
    I'd need to actually hide/disable the Create/CreateInsert button on my edit pages if the underlying EO does not allow new row creation for the current role. I gave a thought to EO's Custom Properties as a way to handle that extra permission flag, but is it a viable way? Can they be accessed through EL so that I can, say, use them directly in the Rendered/Disabled property of the button to regulate access?
    Or would you suggest another strategy altogether?
    Please share your ideas.
    thanks,
    RickyS

    Well, I can definitely see some benefits in having security at the model layer, at least in our scenario. In a complex app with many edit pages often dealing multiple times with the same EOs, having to specify a single set of policies on the EO itself and see it automatically implemented on every page seems a plus and a step ahead from 10g - not that I tried Security in 10g, but I know the approach. Seeing fields automatically become read-only or datacontrol operation buttons such as Delete become disabled without specifying anything on the page is cleaner and will speed up development a bit, too (for large numbers of pages that might be significant, on a small app it's probably irrelevant).
    Probably not as useful and powerful as model-driven lists, but still a welcome feature. You probably have a point about the double mainteinance, but that may be avoided if the BC layer security truly encompasses everything (e.g. if I can't rely on a "create" permissions, I'll certainly have to maintain additional code as well as additional BC data such as custom properties to deal with that, and this is even worse).
    Another point is that I might want to enable/disable functionality on the page via EL/backing bean based on BC permissions, and that seems useful. Being able to express a condition like "this EO is accessible" or "this attribute is accessible" is sometimes much superior to "user belongs to this role". It's better to decouple roles from the secured targets and just use the latter, IMHO. Especially becuse we'll likely won't have a fixed set of static roles defined in advance for all customers we'll deploy our webapp to.
    Just my 2 cents, anyway, you might end up being totally right :-)
    Cheers,
    RickyS

Maybe you are looking for