@Override
	public List<CPDefinitionOptionValueRel> findByKey(String key, int start,
		int end,
		OrderByComparator<CPDefinitionOptionValueRel> orderByComparator,
		boolean retrieveFromCache) {
		boolean pagination = true;
		FinderPath finderPath = null;
		Object[] finderArgs = null;

		if ((start == QueryUtil.ALL_POS) && (end == QueryUtil.ALL_POS) &&
				(orderByComparator == null)) {
			pagination = false;
			finderPath = FINDER_PATH_WITHOUT_PAGINATION_FIND_BY_KEY;
			finderArgs = new Object[] { key };
		}
		else {
			finderPath = FINDER_PATH_WITH_PAGINATION_FIND_BY_KEY;
			finderArgs = new Object[] { key, start, end, orderByComparator };
		}

		List<CPDefinitionOptionValueRel> list = null;

		if (retrieveFromCache) {
			list = (List<CPDefinitionOptionValueRel>)finderCache.getResult(finderPath,
					finderArgs, this);

			if ((list != null) && !list.isEmpty()) {
				for (CPDefinitionOptionValueRel cpDefinitionOptionValueRel : list) {
					if (!Objects.equals(key, cpDefinitionOptionValueRel.getKey())) {
						list = null;

						break;
					}
				}
			}
		}

		if (list == null) {
			StringBundler query = null;

			if (orderByComparator != null) {
				query = new StringBundler(3 +
						(orderByComparator.getOrderByFields().length * 2));
			}
			else {
				query = new StringBundler(3);
			}

			query.append(_SQL_SELECT_CPDEFINITIONOPTIONVALUEREL_WHERE);

			boolean bindKey = false;

			if (key == null) {
				query.append(_FINDER_COLUMN_KEY_KEY_1);
			}
			else if (key.equals("")) {
				query.append(_FINDER_COLUMN_KEY_KEY_3);
			}
			else {
				bindKey = true;

				query.append(_FINDER_COLUMN_KEY_KEY_2);
			}

			if (orderByComparator != null) {
				appendOrderByComparator(query, _ORDER_BY_ENTITY_ALIAS,
					orderByComparator);
			}
			else
			 if (pagination) {
				query.append(CPDefinitionOptionValueRelModelImpl.ORDER_BY_JPQL);
			}

			String sql = query.toString();

			Session session = null;

			try {
				session = openSession();

				Query q = session.createQuery(sql);

				QueryPos qPos = QueryPos.getInstance(q);

				if (bindKey) {
					qPos.add(key);
				}

				if (!pagination) {
					list = (List<CPDefinitionOptionValueRel>)QueryUtil.list(q,
							getDialect(), start, end, false);

					Collections.sort(list);

					list = Collections.unmodifiableList(list);
				}
				else {
					list = (List<CPDefinitionOptionValueRel>)QueryUtil.list(q,
							getDialect(), start, end);
				}

				cacheResult(list);

				finderCache.putResult(finderPath, finderArgs, list);
			}
			catch (Exception e) {
				finderCache.removeResult(finderPath, finderArgs);

				throw processException(e);
			}
			finally {
				closeSession(session);
			}
		}

		return list;
	}
@ Override public List < CPDefinitionOptionValueRel > findByKey ( String key , int start , int end , OrderByComparator < CPDefinitionOptionValueRel > orderByComparator , boolean retrieveFromCache ) { boolean pagination = true ; FinderPath finderPath = null ; Object [ ] finderArgs = null ; if ( ( start == QueryUtil . ALL_POS ) && ( end == QueryUtil . ALL_POS ) && ( orderByComparator == null ) ) { pagination = false ; finderPath = FINDER_PATH_WITHOUT_PAGINATION_FIND_BY_KEY ; finderArgs = new Object [ ] { key } ; } else { finderPath = FINDER_PATH_WITH_PAGINATION_FIND_BY_KEY ; finderArgs = new Object [ ] { key , start , end , orderByComparator } ; } List < CPDefinitionOptionValueRel > list = null ; if ( retrieveFromCache ) { list = ( List < CPDefinitionOptionValueRel > ) finderCache . getResult ( finderPath , finderArgs , this ) ; if ( ( list != null ) && ! list . isEmpty ( ) ) { for ( CPDefinitionOptionValueRel cpDefinitionOptionValueRel : list ) { if ( ! Objects . equals ( key , cpDefinitionOptionValueRel . getKey ( ) ) ) { list = null ; break ; } } } } if ( list == null ) { StringBundler query = null ; if ( orderByComparator != null ) { query = new StringBundler ( 3 + ( orderByComparator . getOrderByFields ( ) . length * 2 ) ) ; } else { query = new StringBundler ( 3 ) ; } query . append ( _SQL_SELECT_CPDEFINITIONOPTIONVALUEREL_WHERE ) ; boolean bindKey = false ; if ( key == null ) { query . append ( _FINDER_COLUMN_KEY_KEY_1 ) ; } else if ( key . equals ( "" ) ) { query . append ( _FINDER_COLUMN_KEY_KEY_3 ) ; } else { bindKey = true ; query . append ( _FINDER_COLUMN_KEY_KEY_2 ) ; } if ( orderByComparator != null ) { appendOrderByComparator ( query , _ORDER_BY_ENTITY_ALIAS , orderByComparator ) ; } else if ( pagination ) { query . append ( CPDefinitionOptionValueRelModelImpl . ORDER_BY_JPQL ) ; } String sql = query . toString ( ) ; Session session = null ; try { session = openSession ( ) ; Query q = session . createQuery ( sql ) ; QueryPos qPos = QueryPos . getInstance ( q ) ; if ( bindKey ) { qPos . add ( key ) ; } if ( ! pagination ) { list = ( List < CPDefinitionOptionValueRel > ) QueryUtil . list ( q , getDialect ( ) , start , end , false ) ; Collections . sort ( list ) ; list = Collections . unmodifiableList ( list ) ; } else { list = ( List < CPDefinitionOptionValueRel > ) QueryUtil . list ( q , getDialect ( ) , start , end ) ; } cacheResult ( list ) ; finderCache . putResult ( finderPath , finderArgs , list ) ; } catch ( Exception e ) { finderCache . removeResult ( finderPath , finderArgs ) ; throw processException ( e ) ; } finally { closeSession ( session ) ; } } return list ; }
Returns an ordered range of all the cp definition option value rels where key = &#63;.

<p>
Useful when paginating results. Returns a maximum of <code>end - start</code> instances. <code>start</code> and <code>end</code> are not primary keys, they are indexes in the result set. Thus, <code>0</code> refers to the first result in the set. Setting both <code>start</code> and <code>end</code> to {@link QueryUtil#ALL_POS} will return the full result set. If <code>orderByComparator</code> is specified, then the query will include the given ORDER BY logic. If <code>orderByComparator</code> is absent and pagination is required (<code>start</code> and <code>end</code> are not {@link QueryUtil#ALL_POS}), then the query will include the default ORDER BY logic from {@link CPDefinitionOptionValueRelModelImpl}. If both <code>orderByComparator</code> and pagination are absent, for performance reasons, the query will not have an ORDER BY clause and the returned result set will be sorted on by the primary key in an ascending order.
</p>

@param key the key
@param start the lower bound of the range of cp definition option value rels
@param end the upper bound of the range of cp definition option value rels (not inclusive)
@param orderByComparator the comparator to order the results by (optionally <code>null</code>)
@param retrieveFromCache whether to retrieve from the finder cache
@return the ordered range of matching cp definition option value rels