/** INTERNAL: Prepare the receiver for execution in a session. */
  protected void prepare() throws QueryException {
    if ((!isReportQuery()) && prepareFromCachedQuery()) {
      return;
    }
    super.prepare();

    getContainerPolicy().prepare(this, getSession());

    if (getContainerPolicy().overridesRead()) {
      return;
    }

    if (getDescriptor().isDescriptorForInterface()) {
      return;
    }

    prepareSelectAllRows();
    computeBatchReadMappingQueries();
  }