}
else if ( retrievalMethod == DatabaseRetrievalMethod.QUERY ) {
initializer = CriteriaObjectInitializer.INSTANCE;
}
else {
throw new AssertionFailure( "Unknown " + DatabaseRetrievalMethod.class.getSimpleName() + "." + retrievalMethod );
}
if ( lookupMethod == ObjectLookupMethod.SKIP ) {
return initializer;
}
else if ( lookupMethod == ObjectLookupMethod.PERSISTENCE_CONTEXT ) {
return new PersistenceContextObjectInitializer( initializer );
}
else if ( lookupMethod == ObjectLookupMethod.SECOND_LEVEL_CACHE ) {
//we want to check the PC first, that's cheaper
return new PersistenceContextObjectInitializer( new SecondLevelCacheObjectInitializer( initializer ) );
}
else {
throw new AssertionFailure( "Unknown " + ObjectLookupMethod.class.getSimpleName() + "." + lookupMethod );
}
//unreachable statement
}