Ниже приведен пример JdbcTemplate.queryForList
возвращает объект Целое число
и мы пытаемся преобразовать его в Длинный
напрямую:
public ListfindAll() { String sql = "SELECT * FROM CUSTOMER"; List customers = new ArrayList<>(); List
Выход
Caused by: java.lang.ClassCastException: class java.lang.Integer cannot be cast to class java.lang.Long (java.lang.Integer and java.lang.Long are in module java.base of loader 'bootstrap') at com.mkyong.misc.CustomerRepository.findAll(CustomerRepository.java:73) at com.mkyong.misc.CustomerRepository$$FastClassBySpringCGLIB$$7fc6ff36.invoke() at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:749) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:139) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:688) at com.mkyong.misc.CustomerRepository$$EnhancerBySpringCGLIB$$f96f7027.findAll( ) at com.mkyong.StartApplication.startCustomerApp(StartApplication.java:103) at com.mkyong.StartApplication.run(StartApplication.java:72) at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:813)
Решение
Чтобы решить эту проблему, преобразуйте ее обратно в исходное Целое число
и приведите к Long
obj.setID(((Integer) row.get("ID")).longValue()); //obj.setID(((Long) row.get("ID")));
Java базовый:
Integer num = 1; Long numInLong = num.longValue(); // Integer to Long Long numInLong2 = Long.valueOf(num); // Integer to Long
Рекомендации
- Java – Преобразование целого числа в длинное
- Java – Преобразование целого числа в длинное JavaDocs )
Оригинал: “https://mkyong.com/java/java-lang-classcastexception-class-java-lang-integer-cannot-be-cast-to-class-java-lang-long/”