Setting the "primary key" possible?

We are trying to access an existing database using Kodo JDO. A part of
this database is old and not particularly well-designed.
Some tables does not have a primary key, eventhough they are entities that
need to be mapped to classes in our persistence layer. For the one table
we are looking at currently, we have changeed a unique index on a numeric
field to be the primary key, simply to make things work.
The table (x) is extremely simple:
id number
description varchar
We have defined the table as having application identity since the user
wants to control the values of the id column. In fact, he would like to be
able to update the value, as long as no other records in the system refers
to the record via a foreign key.
When updating the record we get a kodo.util.UserException saying that
changing the primary key is illegal for persisted objects.
This is of course reasonable seen from JDO, but in our old user interface,
it was possible to change this id as long as it was not referred to.
Is there any other way out of this than to add an "internalID" column with
datastore identify, make that the primary key and then have the id column
have a unique database constraint instead?? We would prefer to not change
the database schema, but are willing to if absolutely necessary.

Is there any other way out of this than to add an "internalID" column with
datastore identify, make that the primary key and then have the id column
have a unique database constraint instead?? We would prefer to not change
the database schema, but are willing to if absolutely necessary.Well, I guess you could do the following:
- Set some unmanaged field to the desired new pk value.
- Use a custom class mapping (probably extending
kodo.jdbc.meta.BaseClassMapping) to change the pk column on updates based on the
value of the unmanaged field.
It's not trivial, but it at least avoids schema changes. Note that it will only
work correctly if you have very short-lived PersistenceManagers, though. Once a
transaction that changes a pk value commits, the PM cache will be invalid; Kodo
will still think the object has its old pk value. You also couldn't use the
DataCache.

Similar Messages

  • How do you set the primary key

    I have a simple table with a numeric primary key:
    CREATE TABLE MYPROJECT (
    ProjectKey NUMBER NOT NULL,
    RpcCode VARCHAR2(128) NOT NULL,
    Project_ID VARCHAR2(128) NOT NULL,
    SSR_Name VARCHAR2(128) NOT NULL,
    GARMS_COMPLIANT VARCHAR2(5) DEFAULT 'false' NOT NULL
    ALTER TABLE MYPROJECT ADD CONSTRAINT T_O2C_PROJECT_PK PRIMARY KEY (ProjectKey);
    I am trying to use the database adapter to insert a row. How can I specify in the WSDL to get a system variable's next value? Must I perform my own select on the system variable's nextvalue before executing the insert? How would that be done using the database adapter?
    The previous developer used nothing but stored procedures to perform database operations. I'm beginning to see why.

    Two solutions
    - Create your PK in BPEL and pass it in the message to the DB-Adapter
    - Create your PK via database triggers
    Marc
    http://orasoa.blogspot.com

  • Setting CMP Primary Key equal to DB primary key

    Is their a mechanism in Oracle JDeveloper(or other tools) for setting the primary key of auto-generated CMP beans to equal the database primary key?
    If so, could someone kindly share their views on the benefits/drawbacks of this approach to CMP?
    -Teodoro Sorgo

    Brice,
    It sounds like you have a page process on every page. Why not just wait to process all of the data on the last page, using your own pl/sql process? Say you have pages 1-3 with items
    P1_ID
    P1_NAME
    P2_DEPT
    P2_LOCATION
    P3_OTHER
    Only have a process on Page 3 have that does
    insert into table (id, name, dept, location, other) values
    (:P1_ID, :P1_NAME, :P2_DEPT ...
    Anton

  • Hi  cant see the primary key column in master detail  form

    I have a master detail form .In the first master form i am unable to see the primary key
    Now the form is built completley and i also will like to see the primary key column visible in master report
    If i had set the primary key as rowid then i could have seen the primary key ..
    Now i can see the pencil icon (The eidt row pencil icon) instead of the actual primary key column . .which is a number data..
    I will like that too be visible ..Can any one guide what should i do for this..
    Thanks

    Hi Mat,,
    I am using apex 4.2 db version 11g and in the first master page i had set the value of combo which is primary key column as text
    But still iam not able to see the number ..Note if i recreate the form ..with rowid as primary key i am able to see the column since the pencil icon(edit icon) is on row id..
    Currently All i see is the edit icon ..I need both the edit icon and also the number ..
    Thanks

  • Getting the primary key from order form

    Does anyone know how to get the primary key (DocEntry) off of the order form for an existing order?  I don't really want to use the DocNum field since it is not the primary key and theoretically two different orders could have the same DocNum.  Thanks in advance for your help.

    Hi Joe,
    DocEntry and DocNum values are unique, so you cannot have in db 2 orders with the same DocNum. It's possible, that DocEntry and DocNum values can vary.
    If you know the DocNum value (f.e. from Order's Form), you can simple use RecordSet object:
    Dim sQuery as String
    Dim oOrder as SAPbobsCOM.Documents
    Dim oRecordSet As SAPbobsCOM.Recordset
    Set oOrder = oCompany.GetBusinessObject(oOrders)
    Set oRecordSet = oCompany.GetBusinessObject(BoRecordset)
    sQuery = "Select DocEntry From ORDR Where DocNum = '" & DocNumber & "'"
    oRecordSet.doQuery sQuery
    If oRecordSet.RecordCount > 0 Then
      oOrder.GetByKey(oRecordSet.Fields(0).Value)
    End If
    And this should work.
    Regards
    Libor.

  • Setting a Primary Key for a newly added Column

    Is it possible for setting a primary key for a newly added column in a table having records?

    Hi,
    km**** wrote:
    oh if the table has records then it is not possible ah...No, the table can have rows at the time you add the Primary Key constraint. Solomon was just saying that the column(s) that you are making into the Primary Key must already have unique values. A Primary Key can not be NULL, so you must do the steps in this order:
    (1) ALTER TABLE to add the column(s) (if this hasn't been done already)
    (2) UPDATE the table, to put unique values in all rows for the Primary Key column(s)
    (3) Add the PRIMARY KEY constraint
    You need to do step (2) before you do step (3)

  • Using a custom PL/SQL to populate the primary key in a tabular form

    I want to use a Custom PL/SQL Function to populate the primary key when I insert a new record into a tabular form. I want to get the value from a hidden page Item. The code I am using for the primary key source is:
    BEGIN
    INSERT INTO TEAM_MEMBERS(TEAM_ID)
    VALUES(:P75_TEAM_ID);
    END;
    When I try to insert a new record I get the following error:
    Error      ERR-1904 Unable to compute item default: type = Function Body computation_type= BEGIN INSERT INTO TEAM_MEMBERS(TEAM_ID) VALUES(:P75_TEAM_ID); END; .
    ORA-06550: line 5, column 2: PLS-00103: Encountered the symbol ";" when expecting one of the following: begin case declare end exception exit for goto if loop mod null pragma raise return select update while with << close current delete fetch lock insert open rollback savepoint set sql execute commit forall merge pipe The symbol "exit" was substit
    Any ideas what I am doing wrong?
    Thanks!

    Brian - Sometimes whitespace at the end of the block causes this. Be sure to trim everything after the last semicolon including tabs and newlines.
    Scott

  • Too many objects match the primary key oracle.jbo.Key

    Hi OAF Gurus,
    Currently we are implementing R12 Upgrade , for this we have deployed all the custom OAF Application related files on to the the respective JAVA_TOP folder.
    We have a custom municipal postal application which tracks the Postal Details.
    The page runs perfectly fine without any error in 11i instance, but the same is erroring out In R12.
    In R12 it shows an error as Too many objects match the primary key oracle.jbo.Key[112010 2014-10-01]
    here 112010 is nothing but the postal code id and 2014-10-01 is the Effective Start Date
    We have a custom table as xxad_postal_codes_f  (Date Track table)which contains the postal_code_id and effective_start_date (primary key is combination of postal_code_id and effective_start_date ).
    The Table already contains a row for postal_code_id = 112010  and Effective_Start_date = Sysdate.
    Now we want to update the entry for the same postal code with the Id being same as 112010  and  Effective_Start_date as 2014-10-01 through custom PostCodeChangePG
    at the time of save we are getting an error as Too many objects match the primary key oracle.jbo.Key[112010 2014-10-01]
    The table doesn't contain any of the data mentioned ([112010 2014-10-01]) at the time of insertion, hence there should not be any duplication of primary key but still we are getting the error.
    Please let us know how can we handle this..?
    Below is the code which is getting called on Click of Save button of PostCodeChangePG
    if (pageContext.getParameter("Apply") != null)
          PCodeCoWorkerBase coWorker = getCoWorker(pageContext, webBean);
              coWorker.processApply();
    Code in PCodeCoWorkerBase
        public void processApply()
          String postalCodeId = UIHelper.getRequiredParameter(pageContext, "postalCodeId");
          Date startDate = UIHelper.getRequiredDateParameter(pageContext , "EffectiveStartDate");
         Serializable[] postalCodeData = (Serializable[]) applicationModule.invokeMethod( "insertPostalCodeMajorChange", params, paramTypes );
          finalizeTransactionAndRedirect( postalCodeData );
    Code in Application Module
      public Serializable[] insertPostalCodeMajorChange ( String postalCodeId, Date date )
        PCodeAmWorker amWorker = new PCodeAmWorker(this);
        return amWorker.insertMajorChange( postalCodeId, DateHelper.convertClientToServerDate( getOADBTransaction(), date )
    Code in PCodeAmWorker
      public Serializable[] insertMajorChange ( String postalCodeId, Date date )
        // Get the view objects we need from the application module
        OAViewObject viewObject = (OAViewObject) applicationModule.getPCodesVO();
        PCodesVORowImpl currentRow = (PCodesVORowImpl) viewObject.getCurrentRow();
        currentRow.validate();
        currentRow.setEffectiveStartDate(date);
        currentRow.setComment1(currentRow.getNewComment());
    // Create a new row based on the current row
    PCodesVORowImpl newRow = (PCodesVORowImpl) viewObject.createAndInitRow(currentRow); //This is failing out and gives the error
    // Get the new effective start date as entered by the user
    Date effectiveStartDate = currentRow.getEffectiveStartDate();
        // Calculate the previous period's effective end date
        Date previousEffectiveEndDate = DateHelper.addDays(effectiveStartDate, -1);
        // Refresh the current row (the one changed by the UI) with the data it had at the beginning of the transaction
        currentRow.refresh(Row.REFRESH_UNDO_CHANGES);
        // The current row will now represent data for the the previous period set the effective end date for the previous period
        currentRow.setEffectiveEndDate(previousEffectiveEndDate);
        // Insert the newly created row that now represents the new period
        viewObject.insertRow(newRow);
        applicationModule.apply();
        return generateResult(newRow);
    PCodesVO() is based on PostalCodeEO
    below is the code from PostalCodeEOImpl
      public void create(AttributeList attributeList)
        // NOTE: This call will set attribute values if the entity object  is created with a call to vo.createAndInitRow(..)
        super.create(attributeList);
        if (getPostalCodeId() == null)
          setPostalCodeId(getOADBTransaction().getSequenceValue("XXAD_POSTAL_CODES_S"));
        if (getEffectiveStartDate() == null)
          setEffectiveStartDate(getOADBTransaction().getCurrentDBDate());
    After diagnosing the issue we found that the error is on the code of AMworker file while creating a new row PCodesVORowImpl newRow = (PCodesVORowImpl) viewObject.createAndInitRow(currentRow);
    we tried so many things such as clearing entity cache, VO cache, validating for duplicate primary key but still not able to resolved this.
    Please advice how to insert a new row on the PCodesVORowImpl without any exception.
    Thanks,
    Pallavi

    Hi ,
    One question here , if you are udating a existing record then why you are trying to create a new row
    PCodesVORowImpl newRow = (PCodesVORowImpl) viewObject.createAndInitRow(currentRow);
    Thanks
    Pratap

  • JBO-25013: Too many objects match the primary key oracle.jbo.Key

    hi am adding values from one viewObject to another viewObject am geting this error JBO-25013: Too many objects match the primary key oracle.jbo.Key
    i used this code
    <af:commandButton text="Add New" id="cb5"
                                            actionListener="#{pageFlowScope.addMember.addMember}"/>
        RichTable empTable;
         public void setEmpTable(RichTable empTable) {
             this.empTable = empTable;
         public RichTable getEmpTable() {
             return empTable;
    binding="#{pageFlowScope.addMember.empTable}">
    the error is pointing in this line
        public void addMember(javax.faces.event.ActionEvent actionEvent) {
            List<String> tempTable = new ArrayList<String>();
            //Code to get the bindings for TargetVO :
                 RowKeySet selectedEmps = getEmpTable().getSelectedRowKeys();   
                   Iterator selectedEmpIter = selectedEmps.iterator();
                   DCBindingContainer bindings =
                                     (DCBindingContainer)BindingContext.getCurrent().getCurrentBindingsEntry();
                   DCIteratorBinding empIter = bindings.findIteratorBinding("UserDetailsViewVO1Iterator");
                   RowSetIterator empRSIter = empIter.getRowSetIterator();
                    while(selectedEmpIter.hasNext()){
                      Key key = (Key)((List)selectedEmpIter.next()).get(0);
                      Row currentRow = empRSIter.getRow(key);
                         onRowCreate(currentRow);
        public void onRowCreate( Row currentRow ) {
            OIDOperations   oIDOperations= new  OIDOperations();
            Map<Object,String> mp=new HashMap<Object, String>();         
         BindingContainer bindings = BindingContext.getCurrent().getCurrentBindingsEntry();
         //access the name of the iterator the table is bound to.
         DCIteratorBinding dciter = (DCIteratorBinding) bindings.get("DeltMember1Iterator");
         //access the underlying RowSetIterator
         RowSetIterator rsi = dciter.getRowSetIterator();
         //get handle to the last row
         Row lastRow = rsi.last();
         //obtain the index of the last row
         int lastRowIndex = rsi.getRangeIndexOf(lastRow);
         //create a new row
         Row newRow = rsi.createRow();
         String f = (String)currentRow.getAttribute("Firstname");
         String s = (String)currentRow.getAttribute("Surname");
         String u = (String)currentRow.getAttribute("Username"); 
         String n = (String)currentRow.getAttribute("Emailaddress");
            newRow.setAttribute("Firstname", f);
            newRow.setAttribute("Surname", s);
            newRow.setAttribute("Username1", u);
            newRow.setAttribute("Username", u);
            newRow.setAttribute("Emailaddress", n);
            newRow.setAttribute("Organisationid1",getorgid());
         //initialize the row
         newRow.setNewRowState(Row.STATUS_INITIALIZED);
         //add row to last index + 1 so it becomes last in the range set
         rsi.insertRowAtRangeIndex(lastRowIndex +1,  newRow);
         //make row the current row so it is displayed correctly
         rsi.setCurrentRow(newRow);   
            System.out.println("Username " + u);
            System.out.println("firstname " + f);
            System.out.println("surname " + s);
            System.out.println("email " + n);
        }Edited by: adf009 on 2013/02/14 2:44 PM
    Edited by: adf009 on 2013/02/14 2:44 PM
    Edited by: adf009 on 2013/02/14 2:46 PM
    Edited by: adf009 on 2013/02/14 2:47 PM

    how must i control my pk
    my log error is
    Caused by: oracle.jbo.TooManyObjectsException: JBO-25013: Too many objects match the primary key oracle.jbo.Key[2909 ].
         at oracle.jbo.server.EntityCache.throwTooManyObjectsException(EntityCache.java:604)
         at oracle.jbo.server.EntityCache.handleDuplicateKey(EntityCache.java:613)
         at oracle.jbo.server.EntityCache.addForAltKey(EntityCache.java:1020)
         at oracle.jbo.server.EntityCache.add(EntityCache.java:537)
         at oracle.jbo.server.EntityImpl.callCreate(EntityImpl.java:1207)
         at oracle.jbo.server.ViewRowStorage.create(ViewRowStorage.java:1152)
         at oracle.jbo.server.ViewRowImpl.create(ViewRowImpl.java:498)
         at oracle.jbo.server.ViewRowImpl.callCreate(ViewRowImpl.java:515)
         at oracle.jbo.server.ViewObjectImpl.createInstance(ViewObjectImpl.java:5714)
         at oracle.jbo.server.QueryCollection.createRowWithEntities(QueryCollection.java:1993)
         at oracle.jbo.server.ViewRowSetImpl.createRowWithEntities(ViewRowSetImpl.java:2492)
         at oracle.jbo.server.ViewRowSetImpl.doCreateAndInitRow(ViewRowSetImpl.java:2533)
         at oracle.jbo.server.ViewRowSetImpl.createRow(ViewRowSetImpl.java:2514)
         at oracle.jbo.server.ViewObjectImpl.createRow(ViewObjectImpl.java:11079)
         at uam.cadastre.gov.za.OrgDetails.onRowCreate(OrgDetails.java:1650)
         at uam.cadastre.gov.za.OrgDetails.addMember(OrgDetails.java:1624)
         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
         at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
         at java.lang.reflect.Method.invoke(Method.java:597)
         at com.sun.el.parser.AstValue.invoke(Unknown Source)
         at com.sun.el.MethodExpressionImpl.invoke(Unknown Source)
         at org.apache.myfaces.trinidadinternal.taglib.util.MethodExpressionMethodBinding.invoke(MethodExpressionMethodBinding.java:53)
         ... 49 more
    <DCUtil> <findSpelObject> [3498] DCUtil, returning:oracle.jbo.uicli.binding.JUFormBinding, for uam_view_pageDefs_OrgDetailsPageDef_WEB_INF_Updatetaskflow_definition_xml_Updatetaskflow_definition
    <DCIteratorBinding> <releaseDataInternal> [3499] Releasing iterator binding:OfficecodeList_436
    <DCIteratorBinding> <releaseDataInternal> [3500] Releasing iterator binding:OrganisationtypecodeList_344
    <DCIteratorBinding> <releaseDataInternal> [3501] Releasing iterator binding:OrgsubtypecodeList_437
    <DCIteratorBinding> <releaseDataInternal> [3502] Releasing iterator binding:CountrycodeList_438
    <DCIteratorBinding> <releaseDataInternal> [3503] Releasing iterator binding:ProvinceList_439
    <DCIteratorBinding> <releaseDataInternal> [3504] Releasing iterator binding:CityList_440
    <DCIteratorBinding> <releaseDataInternal> [3505] Releasing iterator binding:SuburbList_441
    <JUCtrlHierNodeBinding> <release> [3506] released: ROOT node binding:noCtrl_oracle_adfinternal_view_faces_model_binding_FacesCtrlHierNodeBinding_45, value:UpdResPerson1Iterator
    <JUCtrlHierNodeBinding> <release> [3507] released: ROOT node binding:noCtrl_oracle_adfinternal_view_faces_model_binding_FacesCtrlHierNodeBinding_46, value:UpdResPerson1Iterator
    <JUCtrlHierNodeBinding> <release> [3508] released: ROOT node binding:noCtrl_oracle_adfinternal_view_faces_model_binding_FacesCtrlHierNodeBinding_90, value:UserDetailsViewVO1Iterator
    <JUCtrlHierNodeBinding> <release> [3509] released: ROOT node binding:noCtrl_oracle_adfinternal_view_faces_model_binding_FacesCtrlHierNodeBinding_203, value:DeltMember1Iterator
    <DCIteratorBinding> <releaseDataInternal> [3510] Releasing iterator binding:UpdUamOrganisation1Iterator
    <JUCtrlHierNodeBinding> <release> [3511] released: ROOT node binding:noCtrl_oracle_adfinternal_view_faces_model_binding_FacesCtrlHierNodeBinding_45, value:UpdResPerson1Iterator
    <JUCtrlHierNodeBinding> <release> [3512] released: ROOT node binding:noCtrl_oracle_adfinternal_view_faces_model_binding_FacesCtrlHierNodeBinding_46, value:UpdResPerson1Iterator
    <DCIteratorBinding> <releaseDataInternal> [3513] Releasing iterator binding:UpdResPerson1Iterator
    <DCIteratorBinding> <releaseDataInternal> [3514] Releasing iterator binding:UpdPaymentOptions1Iterator
    <DCIteratorBinding> <releaseDataInternal> [3515] Releasing iterator binding:LutPaymentmethodsView1Iterator
    <JUCtrlHierNodeBinding> <release> [3516] released: ROOT node binding:noCtrl_oracle_adfinternal_view_faces_model_binding_FacesCtrlHierNodeBinding_203, value:DeltMember1Iterator
    <DCIteratorBinding> <releaseDataInternal> [3517] Releasing iterator binding:DeltMember1Iterator
    <DCIteratorBinding> <releaseDataInternal> [3518] Releasing iterator binding:UamUserdetailsView1Iterator
    <DCIteratorBinding> <releaseDataInternal> [3519] Releasing iterator binding:UpdOrganisationUser1Iterator
    <JUCtrlHierNodeBinding> <release> [3520] released: ROOT node binding:noCtrl_oracle_adfinternal_view_faces_model_binding_FacesCtrlHierNodeBinding_90, value:UserDetailsViewVO1Iterator
    <DCIteratorBinding> <releaseDataInternal> [3521] Releasing iterator binding:UserDetailsViewVO1Iterator
    <JUCtrlHierNodeBinding> <release> [3522] released: ROOT node binding:noCtrl_oracle_adfinternal_view_faces_model_binding_FacesCtrlHierNodeBinding_87, value:vcRowsIterator
    <DCIteratorBinding> <releaseDataInternal> [3523] Releasing iterator binding:operators_357
    <DCIteratorBinding> <releaseDataInternal> [3524] Releasing iterator binding:listIter
    <DCIteratorBinding> <releaseDataInternal> [3525] Releasing iterator binding:values_360
    <DCIteratorBinding> <releaseDataInternal> [3526] Releasing iterator binding:values_360
    <DCIteratorBinding> <releaseDataInternal> [3527] Releasing iterator binding:nestedViewCriteria_362
    <DCIteratorBinding> <releaseDataInternal> [3528] Releasing iterator binding:nestedViewCriteria_362
    <DCIteratorBinding> <releaseDataInternal> [3529] Releasing iterator binding:operators_357
    <DCIteratorBinding> <releaseDataInternal> [3530] Releasing iterator binding:operators_364
    <DCIteratorBinding> <releaseDataInternal> [3531] Releasing iterator binding:listIter
    <DCIteratorBinding> <releaseDataInternal> [3532] Releasing iterator binding:values_367
    <DCIteratorBinding> <releaseDataInternal> [3533] Releasing iterator binding:values_367
    <DCIteratorBinding> <releaseDataInternal> [3534] Releasing iterator binding:nestedViewCriteria_369
    <DCIteratorBinding> <releaseDataInternal> [3535] Releasing iterator binding:nestedViewCriteria_369
    <DCIteratorBinding> <releaseDataInternal> [3536] Releasing iterator binding:operators_364
    <DCIteratorBinding> <releaseDataInternal> [3537] Releasing iterator binding:operators_371
    <DCIteratorBinding> <releaseDataInternal> [3538] Releasing iterator binding:listIter
    <DCIteratorBinding> <releaseDataInternal> [3539] Releasing iterator binding:values_374
    <DCIteratorBinding> <releaseDataInternal> [3540] Releasing iterator binding:values_374
    <DCIteratorBinding> <releaseDataInternal> [3541] Releasing iterator binding:nestedViewCriteria_376
    <DCIteratorBinding> <releaseDataInternal> [3542] Releasing iterator binding:nestedViewCriteria_376
    <DCIteratorBinding> <releaseDataInternal> [3543] Releasing iterator binding:operators_371
    <DCIteratorBinding> <releaseDataInternal> [3544] Releasing iterator binding:operators_378
    <DCIteratorBinding> <releaseDataInternal> [3545] Releasing iterator binding:listIter
    <DCIteratorBinding> <releaseDataInternal> [3546] Releasing iterator binding:values_381
    <DCIteratorBinding> <releaseDataInternal> [3547] Releasing iterator binding:values_381
    <DCIteratorBinding> <releaseDataInternal> [3548] Releasing iterator binding:nestedViewCriteria_383
    <DCIteratorBinding> <releaseDataInternal> [3549] Releasing iterator binding:nestedViewCriteria_383
    <DCIteratorBinding> <releaseDataInternal> [3550] Releasing iterator binding:operators_378
    <DCIteratorBinding> <releaseDataInternal> [3551] Releasing iterator binding:criteriaItemsForSearch_348
    <DCIteratorBinding> <releaseDataInternal> [3552] Releasing iterator binding:viewObjectBindVars_351
    <DCIteratorBinding> <releaseDataInternal> [3553] Releasing iterator binding:viewObjectBindVars_351
    <DCIteratorBinding> <releaseDataInternal> [3554] Releasing iterator binding:properties_353
    <DCIteratorBinding> <releaseDataInternal> [3555] Releasing iterator binding:properties_353
    <DCIteratorBinding> <releaseDataInternal> [3556] Releasing iterator binding:criteriaItemsForSearch_348
    <JUCtrlHierNodeBinding> <release> [3557] released: ROOT node binding:noCtrl_oracle_adfinternal_view_faces_model_binding_FacesCtrlHierNodeBinding_88, value:vcRowsIterator
    <JUCtrlHierNodeBinding> <release> [3558] released: ROOT node binding:noCtrl_oracle_adfinternal_view_faces_model_binding_FacesCtrlHierNodeBinding_87, value:vcRowsIterator
    <JUCtrlHierNodeBinding> <release> [3559] released: ROOT node binding:noCtrl_oracle_adfinternal_view_faces_model_binding_FacesCtrlHierNodeBinding_88, value:vcRowsIterator
    <DCIteratorBinding> <releaseDataInternal> [3560] Releasing iterator binding:vcRowsIterator
    <DCIteratorBinding> <releaseDataInternal> [3561] Releasing iterator binding:variableIterator
    <DCIteratorBinding> <releaseDataInternal> [3562] Releasing iterator binding:UamAddress1Iterator
    <ApplicationPoolMessageHandler> <doPoolMessage> [3563] **** PoolMessage REQ ATTACH LWS
    <ApplicationPoolMessageHandler> <doPoolMessage> [3564] **** PoolMessage REQ DETACH LWS
    <ViewObjectImpl> <closeStatementsResetRowSet> [3565] ViewObject: [internal_vcival_def]Root.internal_vcival_def_385 close prepared statements...
    <ViewObjectImpl> <closeStatementsResetRowSet> [3566] ViewObject: [internal_vco_def]Root.internal_vco_def_442 close prepared statements...
    <ViewObjectImpl> <closeStatementsResetRowSet> [3567] ViewObject: [internal_vci_def]Root.internal_vci_def_355 close prepared statements...
    <ViewObjectImpl> <closeStatementsResetRowSet> [3568] ViewObject: [AppModule.UserDetailsViewVO1.data_uam_view_updateorgPageDef_Updatetaskflowdefinition1_uam_view_pageDefs_OrgDetailsPageDef_WEB_INF_Updatetaskflow_definition_xml_Updatetaskflow_definition_ImplicitViewCriteriaQuery]Root.AppModule_UserDetailsViewVO1_data_uam_view_updateorgPageDef_Updatetaskflowdefinition1_uam_view_pageDefs_OrgDetailsPageDef_WEB_INF_Updatetaskflow_definition_xml_Updatetaskflow_definition_ImplicitViewCriteriaQuery_346 close prepared statements...
    <DCUtil> <findSpelObject> [3569] DCUtil, returning:oracle.adfinternal.view.faces.model.binding.FacesCtrlSearchBinding, for ImplicitViewCriteriaQuery
    <JUCtrlHierNodeBinding> <release> [3570] released: ROOT node binding:noCtrl_oracle_adfinternal_view_faces_model_binding_FacesCtrlHierNodeBinding_87, value:vcRowsIterator
    <JUCtrlHierNodeBinding> <release> [3571] released: ROOT node binding:noCtrl_oracle_adfinternal_view_faces_model_binding_FacesCtrlHierNodeBinding_88, value:vcRowsIterator
    <JUCtrlHierNodeBinding> <release> [3572] released: ROOT node binding:noCtrl_oracle_adfinternal_view_faces_model_binding_FacesCtrlHierNodeBinding_87, value:vcRowsIterator
    <JUCtrlHierNodeBinding> <release> [3573] released: ROOT node binding:noCtrl_oracle_adfinternal_view_faces_model_binding_FacesCtrlHierNodeBinding_88, value:vcRowsIterator
    <DCIteratorBinding> <releaseDataInternal> [3574] Releasing iterator binding:vcRowsIterator
    <DCIteratorBinding> <releaseDataInternal> [3575] Releasing iterator binding:variableIterator
    <ADFLogger> <begin> Rollback transaction
    <ApplicationModuleImpl> <resetState> [3576] Resetting AM=Root
    <ApplicationPoolMessageHandler> <doPoolMessage> [3577] **** PoolMessage REQ DETACH LWS
    <ApplicationPoolMessageHandler> <doPoolMessage> [3578] **** PoolMessage REQ ATTACH LWS
    <ApplicationPoolMessageHandler> <doPoolMessage> [3579] **** PoolMessage REQ DETACH LWS
    <XmlErrorHandler> <handleError> ADF_FACES-60096:Server Exception during PPR, #1
    javax.servlet.ServletException: JBO-25013: Too many objects match the primary key oracle.jbo.Key[2909 ].
         at javax.faces.webapp.FacesServlet.service(FacesServlet.java:277)
         at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)
         at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)
         at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:300)
         at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26)
         at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
         at oracle.adf.model.servlet.ADFBindingFilter.doFilter(ADFBindingFilter.java:205)
         at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
         at oracle.adfinternal.view.faces.webapp.rich.RegistrationFilter.doFilter(RegistrationFilter.java:106)
         at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl$FilterListChain.doFilter(TrinidadFilterImpl.java:446)
         at oracle.adfinternal.view.faces.activedata.AdsFilter.doFilter(AdsFilter.java:60)
         at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl$FilterListChain.doFilter(TrinidadFilterImpl.java:446)
         at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl._doFilterImpl(TrinidadFilterImpl.java:271)
         at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl.doFilter(TrinidadFilterImpl.java:177)
         at org.apache.myfaces.trinidad.webapp.TrinidadFilter.doFilter(TrinidadFilter.java:92)
         at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
         at oracle.adf.library.webapp.LibraryFilter.doFilter(LibraryFilter.java:179)
         at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
         at oracle.security.jps.ee.http.JpsAbsFilter$1.run(JpsAbsFilter.java:119)
         at java.security.AccessController.doPrivileged(Native Method)
         at oracle.security.jps.util.JpsSubject.doAsPrivileged(JpsSubject.java:315)
         at oracle.security.jps.ee.util.JpsPlatformUtil.runJaasMode(JpsPlatformUtil.java:442)
         at oracle.security.jps.ee.http.JpsAbsFilter.runJaasMode(JpsAbsFilter.java:103)
         at oracle.security.jps.ee.http.JpsAbsFilter.doFilter(JpsAbsFilter.java:171)
         at oracle.security.jps.ee.http.JpsFilter.doFilter(JpsFilter.java:71)
         at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
         at oracle.dms.servlet.DMSServletFilter.doFilter(DMSServletFilter.java:139)
         at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
         at weblogic.servlet.internal.RequestEventsFilter.doFilter(RequestEventsFilter.java:27)
         at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
         at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3715)
         at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3681)
         at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
         at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120)
         at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2277)
         at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2183)
         at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1454)
         at weblogic.work.ExecuteThread.execute(ExecuteThread.java:209)
         at weblogic.work.ExecuteThread.run(ExecuteThread.java:178)
    Caused by: oracle.jbo.TooManyObjectsException: JBO-29114 ADFContext is not setup to process messages for this exception. Use the exception stack trace and error code to investigate the root cause of this exception. Root cause error code is JBO-25013. Error message parameters are {0=oracle.jbo.Key[2909 ]}
         at oracle.jbo.server.EntityCache.throwTooManyObjectsException(EntityCache.java:604)
         at oracle.jbo.server.EntityCache.handleDuplicateKey(EntityCache.java:613)
         at oracle.jbo.server.EntityCache.addForAltKey(EntityCache.java:1020)
         at oracle.jbo.server.EntityCache.add(EntityCache.java:537)
         at oracle.jbo.server.EntityImpl.callCreate(EntityImpl.java:1207)
         at oracle.jbo.server.ViewRowStorage.create(ViewRowStorage.java:1152)
         at oracle.jbo.server.ViewRowImpl.create(ViewRowImpl.java:498)
         at oracle.jbo.server.ViewRowImpl.callCreate(ViewRowImpl.java:515)
         at oracle.jbo.server.ViewObjectImpl.createInstance(ViewObjectImpl.java:5714)
         at oracle.jbo.server.QueryCollection.createRowWithEntities(QueryCollection.java:1993)
         at oracle.jbo.server.ViewRowSetImpl.createRowWithEntities(ViewRowSetImpl.java:2492)
         at oracle.jbo.server.ViewRowSetImpl.doCreateAndInitRow(ViewRowSetImpl.java:2533)
         at oracle.jbo.server.ViewRowSetImpl.createRow(ViewRowSetImpl.java:2514)
         at oracle.jbo.server.ViewObjectImpl.createRow(ViewObjectImpl.java:11079)
         at OrgDetails.onRowCreate(OrgDetails.java:1650)
         at OrgDetails.addMember(OrgDetails.java:1624)
         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
         at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
         at java.lang.reflect.Method.invoke(Method.java:597)
         at com.sun.el.parser.AstValue.invoke(Unknown Source)
         at com.sun.el.MethodExpressionImpl.invoke(Unknown Source)
         at org.apache.myfaces.trinidadinternal.taglib.util.MethodExpressionMethodBinding.invoke(MethodExpressionMethodBinding.java:53)
         at org.apache.myfaces.trinidad.component.UIXComponentBase.broadcastToMethodBinding(UIXComponentBase.java:1256)
         at org.apache.myfaces.trinidad.component.UIXCommand.broadcast(UIXCommand.java:183)
         at org.apache.myfaces.trinidad.component.UIXCollection.broadcast(UIXCollection.java:148)
         at org.apache.myfaces.trinidad.component.UIXTable.broadcast(UIXTable.java:279)
         at oracle.adf.view.rich.component.UIXTable.broadcast(UIXTable.java:145)
         at oracle.adf.view.rich.component.rich.data.RichTable.broadcast(RichTable.java:402)
         at oracle.adf.view.rich.component.fragment.UIXRegion.broadcast(UIXRegion.java:148)
         at oracle.adfinternal.view.faces.lifecycle.LifecycleImpl.broadcastEvents(LifecycleImpl.java:1018)
         at oracle.adfinternal.view.faces.lifecycle.LifecycleImpl._executePhase(LifecycleImpl.java:386)
         at oracle.adfinternal.view.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:194)
         at javax.faces.webapp.FacesServlet.service(FacesServlet.java:265)
         ... 38 more
    the error is in this like Row newRow = rsi.createRow();Edited by: adf009 on 2013/02/14 2:48 PM

  • JBO-25013: Too many objects match the primary key oracle.jbo.key error

    I have implemented dependant dropdown in ADF.
    My page contains two dropdowns First one is independant and values in the second one is populated depending on the value chosen in the first one.
    I have used simple selecy query in my view objects and one entity object.
    but while running the page i am getting the error JBO-25013: Too many objects match the primary key oracle.jbo.key
    please help me with how to debug the error.

    Hi,
    Basically that error means exactly what it says. The primary key of your parent VO isn't unique and too many items in the parent VO have the same primary key.
    Post the sql here for your two VO's, and let us know what the primary key is.
    Are you using setCurrentRowWithKeyValue as the VO method to set the current row, or are you using setCurrentRowWithKey?
    -Chris

  • Too many objects match the primary key oracle.jbo.Key[2044 ].;

    When I try to use the Accounting Setup Manager, I get a blank error message and when I click again, I get the following exception:
    Application: FND, Message Name: FND_GENERIC_MESSAGE. Tokens: MESSAGE = oracle.jbo.TooManyObjectsException: JBO-25013: Too many objects match the primary key oracle.jbo.Key[2044 ].;
    Any ideas?
    P.S. I've made all my tablespaces auto-extensible, I picked an accounting method, and I checked to make sure my balancing field has a valid value set.
    EDIT: I made a new calendar and it worked. Sorry for the 'stupid' question. That's a pretty stupid error message though, in my defense
    Edited by: asci on Sep 21, 2012 11:32 AM

    Please see these docs.
    R12 : Accounting Setup Manager Errors With JBO-25013 Too Many Objects Match The Primary Key oracle.jbo.Key [ID 604784.1]
    Accounting Setup Manager with Exception JBO-25013 [ID 1276858.1]
    General Ledger FAQ for Accounting Setup Manager (ASM) [ID 778826.1]
    JBO-25013: Too many objects match the primary key oracle.jbo.Key [ID 730055.1]
    How do you Create a Dummy Ledger with Minimal GL Setup for Agency Setup? [ID 1300365.1]
    Thanks,
    Hussein

  • Too many objects match the primary key oracle.jbo.Key[2]. Error

    Hi
    I have to display a Read Only table and an Editable Form below it so that the user can select a row in the table and that row should be populated in the form below.
    The user should be able to update the row and save in the below form.
    Then the table above also should be refreshed with the updated values.
    For this I have created a VO based on EO.
    Using the same data control I have created a UI Readonly table and an Editable form in the same JSF page.
    When I run the page, the first row is populated in both the table and form.
    When I select the second row in the table, I am getting the following error in the Editable Form
    Error: Too many objects match the primary key oracle.jbo.Key[2 ].
    My EO has only one Primary key and I have not included the ROWID column in EO or VO.
    How can we fix this issue ?
    However, if I move the editable form to another page, It is working fine.
    But we need to have both the table and editable form in the same page for usability purposes.
    Thanks for any help.
    Sameer

    you can try refreshing your VO in various ways:
    1. try setting partialTrigger on table pointing to your commandbutton .. also make sure partialSubmit on your commandButton is set to true.
    2. Do bindings on the page def for Execute action of your read-only VO. Call this method from actions of your commandButton.
    If they dont work then you can try creating a method in your AMImpl which does calls vo.executeQuery and expose this to pageDef.. and call if from the actions of your button .. but this may not be best way
    Amit

  • How to defer the primary key validation to commit time

    Hi
    Is it possible to defer the primary key validation to commit time? I don't know why the framework checks for the unique key constraint immediately after inserting the row and before committing it. This causes "Too many objects match the primary key oracle.jbo.Key[null]" error if the user presses the create new record button multiple times before filling and saving the previous records.
    Thanks,
    Ferez

    Dear M.Jabr,
    Many thanks for your reply. I have access to the database but I prefer to use an ADF workaround to this problem rather than a DB workaround. I am not sure but I think that there should be a way to defer or disable primary key constraint in ADF.
    Anyway, I tried to make the primary key constraint DEFERRABLE in DB using PL/SQL developer but an error occurred (the name is used by another object) which I don't know why.
    Thanks,
    Ferez

  • Problem with the primary key

    Hi All,
    I have a table with the same data repeating 2 times. I mean the rows are depating twice. so now I am creating primary key to the table. It is throwing me an error saying primary key voilation. I will provide the clear scenario.
    create table Employee(
    ID VARCHAR2(4 BYTE) NOT NULL,
    First_Name VARCHAR2(10 BYTE),
    Last_Name VARCHAR2(10 BYTE),
    Start_Date DATE,
    End_Date DATE,
    Salary Number(8,2),
    City VARCHAR2(10 BYTE),
    Description VARCHAR2(15 BYTE)
    insert into employee values ('01','Jason', 'Martin', to_date('19960725','YYYYMMDD'), to_date('20060725','YYYYMMDD'), 1234.56, 'Toronto', 'Programmer');
    insert into employee values ('02','Alison', 'Mathews', to_date('19760321','YYYYMMDD'), to_date('19860221','YYYYMMDD'), 6661.78, 'Vancouver','Tester');
    insert into employee values ('03','James', 'Smith', to_date('19781212','YYYYMMDD'), to_date('19900315','YYYYMMDD'), 6544.78, 'Vancouver','Tester');
    insert into employee values ('04','Celia', 'Rice', to_date('19821024','YYYYMMDD'), to_date('19990421','YYYYMMDD'), 2344.78, 'Vancouver','Manager');
    insert into employee values ('05','Robert', 'Black', to_date('19840115','YYYYMMDD'), to_date('19980808','YYYYMMDD'), 2334.78, 'Vancouver','Tester');
    insert into employee values ('07','David', 'Larry', to_date('19901231','YYYYMMDD'), to_date('19980212','YYYYMMDD'), 7897.78,'New York', 'Manager');
    insert into employee values ('06','Linda', 'Green', to_date('19870730','YYYYMMDD'), to_date('19960104','YYYYMMDD'), 4322.78,'New York', 'Tester');
    insert into employee values ('08','James', 'Cat', to_date('19960917','YYYYMMDD'), to_date('20020415','YYYYMMDD'), 1232.78,'Vancouver', 'Tester')
    insert into employee values ('07','David', 'Larry', to_date('19901231','YYYYMMDD'), to_date('19980212','YYYYMMDD'), 7897.78,'New York', 'Manager');
    insert into employee values ('06','Linda', 'Green', to_date('19870730','YYYYMMDD'), to_date('19960104','YYYYMMDD'), 4322.78,'New York', 'Tester');
    Now the table is with 10 columns
    ID FIRST_NAME LAST_NAME START_DAT END_DATE SALARY CITY DESCRIPTION
    01 Jason Martin 25-JUL-96 25-JUL-06 1234.56 Toronto Programmer
    02 Alison Mathews 21-MAR-76 21-FEB-86 6661.78 Vancouver Tester
    03 James Smith 12-DEC-78 15-MAR-90 6544.78 Vancouver Tester
    04 Celia Rice 24-OCT-82 21-APR-99 2344.78 Vancouver Manager
    05 Robert Black 15-JAN-84 08-AUG-98 2334.78 Vancouver Tester
    06 Linda Green 30-JUL-87 04-JAN-96 4322.78 New York Tester
    07 David Larry 31-DEC-90 12-FEB-98 7897.78 New York Manager
    08 James Cat 17-SEP-96 15-APR-02 1232.78 Vancouver ester
    Creating Primary key to the table
    "ALTER TABLE employee PRIMARY KEY ( ID, First_Name, Last_Name, Start_Date, End_Date,
    Salary, City, Description );"
    I am getting primary key voilation error
    IS THERE ANY WAY TO CREATE PRIMARY KEY ON THE TABLE WITH OUT DELETING THE DATA?
    iS IT POSSIBLE CREATING PRIMARY KEY BY USING 'GROUP BY' FUNCTION OR ANY OTHER FUNCTIONS?
    Edited by: user11872870 on Sep 23, 2010 5:41 PM

    user11872870 wrote:
    Actually there is a small mistake in the question. The table is having the data as
    ID FIRST_NAME LAST_NAME START_DAT END_DATE SALARY CITY DESCRIPTION
    01 Jason Martin 25-JUL-96 25-JUL-06 1234.56 Toronto Programmer
    02 Alison Mathews 21-MAR-76 21-FEB-86 6661.78 Vancouver Tester
    03 James Smith 12-DEC-78 15-MAR-90 6544.78 Vancouver Tester
    04 Celia Rice 24-OCT-82 21-APR-99 2344.78 Vancouver Manager
    05 Robert Black 15-JAN-84 08-AUG-98 2334.78 Vancouver Tester
    06 Linda Green 30-JUL-87 04-JAN-96 4322.78 New York Tester
    07 David Larry 31-DEC-90 12-FEB-98 7897.78 New York Manager
    08 James Cat 17-SEP-96 15-APR-02 1232.78 Vancouver ester
    05 Robert Black 15-JAN-84 08-AUG-98 2334.78 Vancouver "NULL"
    06 Linda Green 30-JUL-87 04-JAN-96 4322.78 New York "NULL"
    There is a null in the duplicate data.....
    As there is NULL in the data It is not allowing me to add the primary key to the table.....
    I am just looking if there is any other way to create primary key with the same data....the reason for the null not allowing you to have unique records is because null means "unknown". I could go into this in more depth but....
    ...again - we need to ask, why do you have linda green and robert black in there twice.
    if you really do need those two extra rows, then create another column with a unique ID using a sequence and make that the primary key. a primary key uniquely identifies a row. for this data I don't see any reason whatsoever to create a composite key like you are attempting.
    by trying to make the entire row a primary key it is clear your understanding is severely lacking.

  • Insert record and return the primary key

    Okay, I need to insert a record into a MSSQL database and return the primary key of that record. Im using the following code which is obviously wrong as I'm getting either 'NULL' or 'com.microsoft.jdbc.base.BaseResultSet@1d520c4' returned depending on the ways I've tried. The primary key is an int value called clientID which is incremented by one each time a new record is added.
    // set the prepared statement
                String sql="INSERT INTO Client(username, country, clientIP, browser, os) VALUES(?,?,?,?,?)";
                PreparedStatement pstmt = conn.prepareStatement(sql);
                pstmt.setString(1, inUserName);
                pstmt.setString(2, inCountry);
                pstmt.setString(3, inClientIP);
                pstmt.setString(4, inBrowser);
                pstmt.setString(5, inOS);
                // Insert the row
                pstmt.executeUpdate();
                Statement stmt = conn.createStatement();
                ResultSet rs = stmt.executeQuery("SELECT SCOPE_IDENTITY()");
                System.out.println("Result "+rs);The primary key value is needed so that it can be used as a foregin key in another table. Am I going about this the correct way? Any help, pointers or code fixing would be appreciated.....

    Yes. I tried this way but I only ever get the answer
    of 0 when i print our the result! Not really sure
    whats happening.That's because you don't print a ResultSet like that. In order to get the key out, you have to do this:
    int key = 0;
    while (rs.next())
        key = rs.getInt(1);What were you thinking with your code?
    You might want to do this in a transaction. If the INSERT fails, you'll want to roll back.
    The "select @@identity" is correct for M$ Access, SQL Server, and Sybase. I believe it's also correct for MySQL, but I'm not 100% certain of that.
    %

Maybe you are looking for

  • Error while attaching document in mail

    Hi, I am trying to attach a file in mail, I wrote the below code: // Set a file as an attachment. Uses JAF FileDataSource. // Create and fill first part MimeBodyPart p1 = new MimeBodyPart(); p1.setText("abcd"); // Create second part MimeBodyPart p2 =

  • Why can't I make a photobook with IPhoto 09 anymore

    I cannot make a photo book anymore HELP?

  • Error -36 when trying to copy AVI files from External Drive to Mac

    Hi Hoping for some help with a problem I appreciate others have faced. I bought a new video camera recently and have just tried to copy the AVI files from the first few videos to my mac but am getting the error code 36 that states the files cannot be

  • Audio2swf and iweb

    hi everyone. i recently got started with audio2swf after seeing it on iwebformusicians. i'm having a problem with pointing iweb html snippet to the flash file. on the iwebformusicians site it here- http://www.iwebformusicians.com/MusicPlayers/MP3toFl

  • Transferring data between MacBooks

    When the aluminum MacBooks were released last year, I sold my aging MacBook Pro and bought a new MacBook. I figured with the speed bumps and much improved graphics card and RAM, the new MacBook would at least match the performance of my old Pro. Alth