Невозможно привести к ошибке java .util.List при выполнении кэширования. - PullRequest
0 голосов
/ 30 апреля 2020

Я делаю простое кеширование в своем приложении Springboot. Здесь я пытаюсь выполнить операции поиска, удаления и обновления с помощью JPA. В то же время я пытаюсь обновить свой кэш также после выполнения каждой операции.

Это моя сущность

@Entity
@Table(name = "cars")
public class Cars implements Serializable{


    @Id
    @Column(name = "carId")
    private long carId;

    @Column(name = "name")
    private String name;
    ..........getters and setters.......

Это моя служба

@Service
public class CarServiceImpl  implements CarService{ 
    @Autowired
    private CarRepository carRepo;

    @Override
    @Transactional
    @Cacheable(value = "cars")
    public Cars save(Cars car) {
        // TODO Auto-generated method stub
        System.out.println("reciving from DB for save");
        return carRepo.save(car);
    }

    @Override
    @Transactional
    @CacheEvict(value="cars" ,key="#id")
    public void delete(long id) {
        System.out.println("reciving from DB for delete");
        // TODO Auto-generated method stub
        carRepo.deleteById(id);
    }

    @Override
    @Transactional
    @CachePut(value="cars",key="#id")
    public Cars update(Cars car,long id) {
        System.out.println("reciving from DB for update");
        // TODO Auto-generated method stub
        return carRepo.save(car);
    }

    @Override
    @Transactional
    @Cacheable(value="cars",key="#id")
    public List<Cars> getAll(long id) {
        System.out.println("reciving from DB for show");
        // TODO Auto-generated method stub
        return carRepo.findAll();
    }

это это ошибка, которую я получаю, когда я выполняю операцию обновления, чтобы добавить новую сущность и затем вызвать метод getAll, когда он загружается из кэша.

java.lang.ClassCastException: com.example.springCaching.entity.Cars cannot be cast to java.util.List
    at com.example.springCaching.serviceImpl.CarServiceImpl$$EnhancerBySpringCGLIB$$80d45199.getAll(<generated>) ~[classes/:na]
    at com.example.springCaching.contoller.CarController.show(CarController.java:39) ~[classes/:na]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_161]
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[na:1.8.0_161]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[na:1.8.0_161]
    at java.lang.reflect.Method.invoke(Unknown Source) ~[na:1.8.0_161]
    at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190) ~[spring-web-5.1.14.RELEASE.jar:5.1.14.RELEASE]
    at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138) ~[spring-web-5.1.14.RELEASE.jar:5.1.14.RELEASE]
    at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:105) ~[spring-webmvc-5.1.14.RELEASE.jar:5.1.14.RELEASE]
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:893) ~[spring-webmvc-5.1.14.RELEASE.jar:5.1.14.RELEASE]
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:798) ~[spring-webmvc-5.1.14.RELEASE.jar:5.1.14.RELEASE]
    at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[spring-webmvc-5.1.14.RELEASE.jar:5.1.14.RELEASE]
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040) ~[spring-webmvc-5.1.14.RELEASE.jar:5.1.14.RELEASE]
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943) ~[spring-webmvc-5.1.14.RELEASE.jar:5.1.14.RELEASE]
    at org.springframework.web.se
...