addParameterHints();
    public IPreparedDSQuery prepare() throws DataException    {        if ( odaStatement != null )            throw new DataException( ResourceConstants.QUERY_HAS_PREPARED );        odaStatement = dataSource.getConnection().prepareStatement( queryText, queryType );                // Ordering is important for the following operations. Column hints should be defined        // after custom fields are declared (since hints may be given to those custom fields).        // Column projection comes last because it needs hints and custom column information        addCustomFields( odaStatement );        addColumnHints( odaStatement );        odaStatement.setColumnsProjection( this.projectedFields );        // If ODA can provide result metadata, get it now        try        {            resultMetadata = odaStatement.getMetaData();        }        catch ( DataException e )        {            // Assume metadata not available at prepare time; ignore the exception        	resultMetadata = null;        }                return this;    }