web工程的DAO层发生类型强转异常java.lang.NumberFormatException: null

本文介绍了一种常见的Web应用程序开发中遇到的问题——DAO层从MySQL数据库获取数据时出现类型强制转换异常,并给出了具体的解决方案。

在web工程中,DAO层获取MySQL数据库的特殊值的数据时,发生类型强转的异常:java.lang.NumberFormatException: null

经过断点调试,发现异常出现在如图位置:
在这里插入图片描述
这是因为JDBC环节使用的是commons-beanutils-1.8.0jar包的org.apache.commons.dbutils中的QueryRunner类方法进行数据库查询,
在这里插入图片描述
而QueryRunner中的query方法返回的是Object类型,不能直接强转为String或者int!!!
应先用String.valueOf方法转成字符串,再用WebUtils.parseInt转成int!!!
在这里插入图片描述
修改之后,不再抛出异常。

注:WebUtils为手写工具类:
在这里插入图片描述

HHH000489: No JTA platform available (set 'hibernate.transaction.jta.platform' to enable JTA platform integration) 2025-09-02 15:54:23.531 INFO [o.s.orm.jpa.LocalContainerEntityManagerFactoryBean] - Initialized JPA EntityManagerFactory for persistence unit 'default' 2025-09-02 15:54:24.345 INFO [org.redisson.Version] - Redisson 3.37.0 2025-09-02 15:54:24.702 INFO [org.redisson.connection.ConnectionsHolder] - 1 connections initialized for 192.168.19.130/192.168.19.130:6379 2025-09-02 15:54:25.221 WARN [o.s.b.a.o.j.JpaBaseConfiguration$JpaWebConfiguration] - spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-in-view to disable this warning 2025-09-02 15:54:25.709 INFO [n.d.b.g.s.a.GrpcServerFactoryAutoConfiguration] - Detected grpc-netty-shaded: Creating ShadedNettyGrpcServerFactory 2025-09-02 15:54:26.688 INFO [o.s.b.actuate.endpoint.web.EndpointLinksResolver] - Exposing 1 endpoint beneath base path '/actuator' 2025-09-02 15:54:26.763 INFO [n.d.b.g.s.serverfactory.AbstractGrpcServerFactory] - Registered gRPC service: com.tplink.smb.yangzhe.as.grpc.UserService, bean: userServiceGrpcImpl, class: com.tplink.smb.yangzhe.as.grpc.impl.UserServiceGrpcImpl 2025-09-02 15:54:26.763 INFO [n.d.b.g.s.serverfactory.AbstractGrpcServerFactory] - Registered gRPC service: grpc.health.v1.Health, bean: grpcHealthService, class: io.grpc.protobuf.services.HealthServiceImpl 2025-09-02 15:54:26.763 INFO [n.d.b.g.s.serverfactory.AbstractGrpcServerFactory] - Registered gRPC service: grpc.reflection.v1alpha.ServerReflection, bean: protoReflectionService, class: io.grpc.protobuf.services.ProtoReflectionService 2025-09-02 15:54:26.833 INFO [n.d.b.g.server.serverfactory.GrpcServerLifecycle] - gRPC Server started, listening on address: *, port: 9090 2025-09-02 15:54:26.842 INFO [com.tplink.smb.yangzhe.as.service.UserServiceTest] - Started UserServiceTest in 7.227 seconds (process running for 8.999) OpenJDK 64-Bit Server VM warning: Sharing is only supported for boot loader classes because bootstrap classpath has been appended org.springframework.dao.InvalidDataAccessApiUsageException: Argument '2310936065@qq.com' could not be converted to the identifier type of entity 'com.tplink.smb.yangzhe.as.model.entity.User' [Error coercing value] at org.springframework.orm.jpa.EntityManagerFactoryUtils.convertJpaAccessExceptionIfPossible(EntityManagerFactoryUtils.java:371) at org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:246) at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.translateExceptionIfPossible(AbstractEntityManagerFactoryBean.java:560) at org.springframework.dao.support.ChainedPersistenceExceptionTranslator.translateExceptionIfPossible(ChainedPersistenceExceptionTranslator.java:61) at org.springframework.dao.support.DataAccessUtils.translateIfNecessary(DataAccessUtils.java:343) at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:160) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) at org.springframework.data.jpa.repository.support.CrudMethodMetadataPostProcessor$CrudMethodMetadataPopulatingMethodInterceptor.invoke(CrudMethodMetadataPostProcessor.java:165) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:223) at jdk.proxy1/jdk.proxy1.$Proxy148.findById(Unknown Source) at com.tplink.smb.yangzhe.as.service.impl.UserServiceImpl.getUserByEmail(UserServiceImpl.java:113) at com.tplink.smb.yangzhe.as.service.impl.UserServiceImpl.login(UserServiceImpl.java:45) at com.tplink.smb.yangzhe.as.service.UserServiceTest.testLoginSuccess(UserServiceTest.java:46) at java.base/java.lang.reflect.Method.invoke(Method.java:569) at java.base/java.util.ArrayList.forEach(ArrayList.java:1511) at java.base/java.util.ArrayList.forEach(ArrayList.java:1511) Caused by: java.lang.IllegalArgumentException: Argument '2310936065@qq.com' could not be converted to the identifier type of entity 'com.tplink.smb.yangzhe.as.model.entity.User' [Error coercing value] at org.hibernate.loader.internal.IdentifierLoadAccessImpl.coerceId(IdentifierLoadAccessImpl.java:235) at org.hibernate.loader.internal.IdentifierLoadAccessImpl.doLoad(IdentifierLoadAccessImpl.java:162) at org.hibernate.loader.internal.IdentifierLoadAccessImpl.lambda$load$1(IdentifierLoadAccessImpl.java:150) at org.hibernate.loader.internal.IdentifierLoadAccessImpl.perform(IdentifierLoadAccessImpl.java:113) at org.hibernate.loader.internal.IdentifierLoadAccessImpl.load(IdentifierLoadAccessImpl.java:150) at org.hibernate.internal.SessionImpl.find(SessionImpl.java:2459) at org.hibernate.internal.SessionImpl.find(SessionImpl.java:2430) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:569) at org.springframework.orm.jpa.SharedEntityManagerCreator$SharedEntityManagerInvocationHandler.invoke(SharedEntityManagerCreator.java:320) at jdk.proxy1/jdk.proxy1.$Proxy142.find(Unknown Source) at org.springframework.data.jpa.repository.support.SimpleJpaRepository.findById(SimpleJpaRepository.java:325) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:569) at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359) at org.springframework.data.repository.core.support.RepositoryMethodInvoker$RepositoryFragmentMethodInvoker.lambda$new$0(RepositoryMethodInvoker.java:277) at org.springframework.data.repository.core.support.RepositoryMethodInvoker.doInvoke(RepositoryMethodInvoker.java:170) at org.springframework.data.repository.core.support.RepositoryMethodInvoker.invoke(RepositoryMethodInvoker.java:158) at org.springframework.data.repository.core.support.RepositoryComposition$RepositoryFragments.invoke(RepositoryComposition.java:515) at org.springframework.data.repository.core.support.RepositoryComposition.invoke(RepositoryComposition.java:284) at org.springframework.data.repository.core.support.RepositoryFactorySupport$ImplementationMethodExecutionInterceptor.invoke(RepositoryFactorySupport.java:752) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) at org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.doInvoke(QueryExecutorMethodInterceptor.java:174) at org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.invoke(QueryExecutorMethodInterceptor.java:149) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) at org.springframework.data.projection.DefaultMethodInvokingMethodInterceptor.invoke(DefaultMethodInvokingMethodInterceptor.java:69) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:380) at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:138) ... 11 more Caused by: org.hibernate.type.descriptor.java.CoercionException: Error coercing value at org.hibernate.type.descriptor.java.CoercionHelper.coerceWrappingError(CoercionHelper.java:396) at org.hibernate.type.descriptor.java.LongJavaType.coerce(LongJavaType.java:156) at org.hibernate.type.descriptor.java.LongJavaType.coerce(LongJavaType.java:24) at org.hibernate.loader.internal.IdentifierLoadAccessImpl.coerceId(IdentifierLoadAccessImpl.java:229) ... 45 more Caused by: java.lang.NumberFormatException: For input string: "2310936065@qq.com" at java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:67) at java.base/java.lang.Long.parseLong(Long.java:711) at java.base/java.lang.Long.parseLong(Long.java:836) at org.hibernate.type.descriptor.java.LongJavaType.lambda$coerce$0(LongJavaType.java:157) at org.hibernate.type.descriptor.java.CoercionHelper.coerceWrappingError(CoercionHelper.java:393) ... 48 more 2025-09-02 15:54:27.488 INFO [n.d.b.g.server.serverfactory.GrpcServerLifecycle] - Completed gRPC server shutdown 2025-09-02 15:54:27.509 INFO [o.s.orm.jpa.LocalContainerEntityManagerFactoryBean] - Closing JPA EntityManagerFactory for persistence unit 'default' 2025-09-02 15:54:27.510 INFO [com.zaxxer.hikari.HikariDataSource] - HikariPool-1 - Shutdown initiated... 2025-09-02 15:54:27.518 INFO [com.zaxxer.hikari.HikariDataSource] - HikariPool-1 - Shutdown completed. Process finished with exit code -1
09-03
at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:2043) at sun.misc.FloatingDecimal.parseDouble(FloatingDecimal.java:110) at java.lang.Double.parseDouble(Double.java:538) at food.FoodAdd.actionPerformed(FoodAdd.java:70) at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022) at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348) at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402) at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259) at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252) at java.awt.Component.processMouseEvent(Component.java:6533) at javax.swing.JComponent.processMouseEvent(JComponent.java:3324) at java.awt.Component.processEvent(Component.java:6298) at java.awt.Container.processEvent(Container.java:2236) at java.awt.Component.dispatchEventImpl(Component.java:4889) at java.awt.Container.dispatchEventImpl(Container.java:2294) at java.awt.Component.dispatchEvent(Component.java:4711) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4888) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4525) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4466) at java.awt.Container.dispatchEventImpl(Container.java:2280) at java.awt.Window.dispatchEventImpl(Window.java:2746) at java.awt.Component.dispatchEvent(Component.java:4711) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758) at java.awt.EventQueue.access$500(EventQueue.java:97) at java.awt.EventQueue$3.run(EventQueue.java:709) at java.awt.EventQueue$3.run(EventQueue.java:703) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:90) at java.awt.EventQueue$4.run(EventQueue.java:731) at java.awt.EventQueue$4.run(EventQueue.java:729) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80) at java.awt.EventQueue.dispatchEvent(EventQueue.java:728) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93) at java.awt.EventDispatchThread.run(EventDispatchThread.java:82) 进程完成,退出码 0
最新发布
12-25
package com.fq.servlet; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.fq.dao.MedDao; import com.fq.entity.Med; @WebServlet("/add") public class AddServlet extends HttpServlet { @Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //获取药品输入的信息 String name=request.getParameter("name"); //String category=String.substring(request.getParameter("category")); String category = request.getParameter("category"); int money=Integer.parseInt(request.getParameter("money")); //将零散数据封装成对象 Med med=new Med(); med.setMedname(name); med.setMedcategory(category); med.setMedmoney(money); //调用empDao完成员工信息的添加 MedDao dao=new MedDao(); dao.add(med); //添加成功之后 跳转到信息查询页 查看添加信息是否成功 response.sendRedirect("main"); } } 问题: HTTP状态 500-内部服务器错误 类型 异常告 消息 nul 描述 服务器遇到一个意外的情况,阻止它完成请求。 例外情况 java.lang.uberFormatException:nul1 iava.lang.Integer.parseInt(lnknown Source)iava.lang.Integer.parselnt(lnknown Source)com fq.servlet.AddServlet.service(AddServlet.java:25)javax.servlet.http.HttpServlet.service(HttpServlet. java:764)org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter. java:53) ):注意 主要问题的全部 stack 信息可以在 server logs 里查看 上述代码有如上问题。怎么改正
07-10
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Dame'Seven

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值