/** * Convenience method to load fields from the datastore. Note that if the fieldNumbers is * null/empty we still should call the persistence handler since it may mean that the version * field needs loading. * * @param fieldNumbers The field numbers. */ protected void loadFieldsFromDatastore(int[] fieldNumbers) { if (myLC.isNew() && myLC.isPersistent() && !isFlushedNew()) { // Not yet flushed new persistent object to datastore so no point in "loading" return; } if ((flags & FLAG_NEED_INHERITANCE_VALIDATION) != 0) // TODO Merge this into fetch object handler { String className = getStoreManager().getClassNameForObjectID(myID, myEC.getClassLoaderResolver(), myEC); if (!getObject().getClass().getName().equals(className)) { myEC.removeObjectFromLevel1Cache(myID); myEC.removeObjectFromLevel2Cache(myID); throw new NucleusObjectNotFoundException( "Object with id " + myID + " was created without validating of type " + getObject().getClass().getName() + " but is actually of type " + className); } flags &= ~FLAG_NEED_INHERITANCE_VALIDATION; } // TODO If the field has "loadFetchGroup" defined, then add it to the fetch plan etc getStoreManager().getPersistenceHandler().fetchObject(this, fieldNumbers); }