You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JSP可通过ID获取数据但Controller中偶发获取失败求助

间歇性ID查询返回Null的排查方案

以下是针对你遇到的间歇性问题的几个实际排查方向,都是开发中常见的诱因:

  • 先确认参数传递的准确性
    别默认ID肯定传对了,在Controller里把接收到的ID原封不动打印到日志,出现问题时对比JSP加载时的ID,排查是否偶尔存在参数丢失、格式错误(比如带空格、非数字字符)或者类型转换溢出(比如数据库ID是BIGINT,Controller用Integer接收导致ID超范围变值)的情况。

  • 排查事务隔离级别的影响
    MySQL 5.6默认是REPEATABLE READ隔离级别,如果JSP的查询和Controller的查询处于不同事务,可能因读快照机制导致Controller读到旧数据。可以临时在Controller的查询语句前加一句SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;切换为读已提交隔离级别,观察问题是否消失。

  • 检查数据库连接池配置
    如果使用了连接池,可能存在连接复用导致的会话状态异常。比如之前的连接残留了未提交事务、设置了特殊字符集/时区,复用后影响查询结果。可以检查连接池是否开启了连接验证(比如每次获取连接时执行SELECT 1),是否配置了连接最大存活时间,避免复用有问题的连接。

  • 查看MySQL日志找线索
    开启MySQL的慢查询日志和错误日志,出现问题时查看对应的查询语句,排查是否存在锁等待、索引失效或数据库临时连接异常的情况,这类问题常导致间歇性查询失败。

  • 排除缓存干扰
    如果应用使用了本地缓存或分布式缓存,确认Controller的查询是否命中了过期缓存或错误的null值缓存。可以临时关闭缓存,若问题消失则说明是缓存配置(比如过期时间、更新策略)的问题。

内容的提问来源于stack exchange,提问作者charmi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 10:10:34