@Cacheable () возвращает идентификатор null - PullRequest
0 голосов
/ 23 января 2019

У меня есть метод findAll(), который возвращает всю специальность из BD, в этом методе я помещаю аннотацию @Cacheable, чтобы получить данные из кеша, проблема в том, что когда я выполняю /specialities API, первыйраз я получаю правильные данные, когда я выполняю API во второй раз, я получаю данные с нулевыми идентификаторами

@Service
@CacheConfig(cacheNames = ServiceConstant.SPECIALITY)
public class SpecialityServiceImpl implements SpecialityService {

    @Autowired
    private SpecialitySearchRepository specialitySearchRepository;

    @Autowired
    private SpecialtyMapper specialityMapper;

    @Override
    @Cacheable
    public List<SpecialityDTO> findAll() {
        return specialitySearchRepository.findAll().stream().map(specialityMapper::toDto)
                .collect(Collectors.toCollection(LinkedList::new));
    }

}

@RestController
public class SpecialityResource {

    @Autowired
    private SpecialityService specialityService;

    @GetMapping("/specialities")
    public List<SpecialityDTO> getAllSpecialitys() {
        return specialityService.findAll();
    }

}

Config

@Configuration
@EnableCaching
public class CacheConfiguration {

    private static final String HAZELCAST_LOGGING_TYPE = "hazelcast.logging.type";

    @Bean
    public Config hazelCastConfig() {
        return new Config().setInstanceName("cache")
                .addMapConfig(
                        new MapConfig().setName(ServiceConstant.SPECIALITY)
                                .setMaxSizeConfig(new MaxSizeConfig(200, MaxSizeConfig.MaxSizePolicy.FREE_HEAP_SIZE))
                                .setEvictionPolicy(EvictionPolicy.LRU).setTimeToLiveSeconds(100))
                .setProperty(HAZELCAST_LOGGING_TYPE, "none");
    }

}

1 Ответ

0 голосов
/ 23 января 2019

@ Аймен Канзари, см .: https://gist.github.com/gokhanoner/766a1a807744d1a69c6a7799c3f34d73

Я пытался воспроизвести проблему, но она работает, как и ожидалось. Я вижу inside findAll method для первого вызова, но следующие просто попали в кеш Hazelcast. Можете ли вы описать проблему немного подробнее?

...