If a entity method is called via the component interface and inside this method actions are called which force a database synchronization, i.e. ejbSelect... or finder, a following change to this entity might not persist to the database if a ejbSelect or finder is called. This will be temporary an inconsistent state. Example: EntityA { abstract void setAttrib1(int attrib); abstract void setAttrib2(int attrib); abstract void ejbSelect1(...); public void update(...) { setAttrib1(...); ejbSelect1(...); // the attrib1 will be flushed to the DB setAttrib2(...); // this attrib might not flushed until there is no other CMP entity method invoked } As workaround the setter can be called via the LocalObject, i.e. ((EntityALocal)myEntityContext.getEJBLocalObject()).setAttrib2(...)
Verified in EAP 6.2.0.ER4.