code: @SuppressWarnings("rawtypes")
      @Override
      public Class extractClassFromRow(Record record, Session session) {
  
          //
          // If we understood the lifecycle of ClassExtractor within EclipseLink we
          // might want to cache the tableversion here, but to be safe, let's call
          // each time, (and there's no particular reason to be concerned about performance here).
          //
  
          Integer tableversion = null;
  
          try {
              tableversion = ServicesManagerStaticAnchor.getServicesManager().getPersistenceManagerService().getJobInstanceTableVersionField();
          } catch (Exception ex) {
              throw new BatchRuntimeException(ex);
          }
  
          if (tableversion == 3) {
              return JobInstanceEntityV3.class;
          } else if (tableversion == 2) {
              return JobInstanceEntityV2.class;
          } else {
              return JobInstanceEntity.class;
          }
      }
docs: {@inheritDoc}