Hey hi there ,
Have you used any transient attribute ? Can you share your code if possible ?
Hi , was there any selection boxes / check boxes in your search page ??
If s , its because ithe VO is getting dirty .
go to VORowImpl make a simple change
change setInternalAttribute to populateAttribute and this would work
It seems you have not executed commit after deleting the record.
In that case record is deleted from the VO and when you requery that changes will be lost, hence the error.
Just try adding getOADBTransaction.commit() method call after you delete the record from VO.
I have already added getOADBTransaction.commit() method, but still have the same error.
I have already tried all the above suggestion. but no desired output, i get the same error. Would you plz let me correct that for deleting a row we need primary key attribute or we can use any one attribute and on basis of that attribute we perform delete operation. My search page gives me error when i do perform the delete lab of OAF tutorial after completing the search and create lab. When i do delete the row it first remove from resultant search but when i go to perform further searches it becomes stuck with the said error. Plz any one respond to this?
Can you share the code and steps you have followed ?
Please share your code
I am the same guy who has created the post. i had issues with posting with preious ID so i created new id and trying to past the code below.
public void deleteEmployee(String employeeNumber)
// First, we need to find the selected employee in our VO.
// When we find it, we call remove( ) on the row which in turn
// calls remove on the associated EmployeeEOImpl object.
int empToDelete = Integer.parseInt(employeeNumber);
OAViewObject vo = (OAViewObject)getPerformanceVO1();
PerformanceVORowImpl row = null;
// This tells us the number of rows that have been fetched in the
// row set, and will not pull additional rows in like some of the
// other "get count" methods.
int fetchedRowCount = vo.getFetchedRowCount();
// We use a separate iterator -- even though we could step through the
// rows without it -- because we don't want to affect row currency.
RowSetIterator deleteIter = vo.createRowSetIterator("deleteIter");
if (fetchedRowCount > 0)
for (int i = 0; i < fetchedRowCount; i++)
row = (PerformanceVORowImpl)deleteIter.getRowAtRangeIndex(i);
// For performance reasons, we generate ViewRowImpls for all
// View Objects. When we need to obtain an attribute value,
// we use the named accessors instead of a generic String lookup.
// Number primaryKey = (Number)row.getAttribute("EmployeeId");
Number primaryKey = row.getPerformanceIndicatorsId();
if (primaryKey.compareTo(empToDelete) == 0)
// This performs the actual delete.
break; // only one possible selected row in this case
// Always close the iterator when you're done.
} // end deleteEmployee
1. This code looks ok except it is recommended to use getOADBTransaction().commit().
2. Try clearing the VO cache before executing VO for search.
Use rowreference and try