Spring @Cacheable()返回id null
我有一个方法Spring @Cacheable()返回id null,spring,caching,hazelcast,spring-cache,Spring,Caching,Hazelcast,Spring Cache,我有一个方法findAll()返回BD中的所有专业,在这个方法中我放置注释@Cacheable从缓存中获取数据,问题是当我执行/specialitiesapi时,我第一次获得正确的数据,当我第二次执行api时,我得到了带有空ID的数据 @Service @CacheConfig(cacheNames = ServiceConstant.SPECIALITY) public class SpecialityServiceImpl implements SpecialityService {
findAll()
返回BD中的所有专业,在这个方法中我放置注释@Cacheable
从缓存中获取数据,问题是当我执行/specialities
api时,我第一次获得正确的数据,当我第二次执行api时,我得到了带有空ID的数据
@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();
}
}
@Aymen Kanzari,请看:
我试图复制这个问题,但它似乎像预期的那样工作。我可以看到findAll方法内部的
用于第一个调用,但下一个调用只会命中Hazelcast缓存。您能更详细地描述一下这个问题吗?同时粘贴缓存配置,可能会有所帮助。
@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");
}
}