I have written a static method generateKey in IndexKeyGenerator class and called it directly as shown in following code..then the custom cache for individual caching works just perfect
@Cacheable(value = "itemsCache", key ="T(com.ernst.transactionsAPI.IndexKeyGenerator).generateKey(#root.target, #root.method, #root.args[0])")
public List<FilialenImpl> getOutletByCustomSearchCache(SearchParametersImpl searchParameters);
don't forget to override the SearchParameters class.