Call getPostedAttribute() anywhere in your Entity Object implementation class to retrieve the posted value of an Entity attribute. The example below calls getPostedAttribute() and getAttribute() to determine the attribute value in the database (posted) and in the Entity cache (not posted yet) respectively. They are called from within an overridden doDML(). Then based on the result of comparing them, certain business logic decisions can be made. Note that we call getPostedAttribute() before calling super.doDML(). This is done because calling super.doDML() will in effect post the attribute value in the Entity cache to the database, so will not make much sense to compare them afterwards: They will be the same!
Example:
// in your Entity Object Implementation class
@Override
protected void doDML(int operation, TransactionEvent e) {
final String EMPLOYEE_ID = "EmployeeId";
// get posted value of EmployeeId attribute
Object postedEmployeeId = getPostedAttribute(this.getAttributeIndexOf(EMPLOYEE_ID));
// get value of EmployeeId before re-posting
Object employeeId = this.getAttribute(EMPLOYEE_ID);
// compare and take some action based on the results of comparison
if (employeeId != null && employeeId.equals(postedEmployeeId)) {
// do something here
}
// finally re-post by calling super.doDML()
super.doDML(operation, e);
}
Context
Entity Object Implementation Class