Это проблема Spring, скрытая в недрах:
java.io.NotSerializableException: org.springframework.data.projection.DefaultMethodInvokingMethodInterceptor
Может быть еще один случай this
В качестве обходного пути вы можете изменить
List<NamesOnly> findByCustomerId( @Param("customerId") List<String> customerId);
до
List<String> findByCustomerId( @Param("customerId") List<String> customerId);
, поскольку ваша проекция возвращает только один столбец firstName
, который предположительно является строкой.
Без @Cacheable
того, что выget back - это список ( сериализуемый ) прокси-классов ( не сериализуемый ).При @Cacheable
список отправляется в распределенное хранилище (Hazelcast) для кэширования, и это не удается, поскольку список сериализуем, а элементы списка - нет.