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

WebSphere使用JNDI数据源连接DB2时SQLCODE=-204问题排查

问题排查:Spring Boot JPA在WebSphere使用JNDI数据源时SQLCODE=-204错误

问题现象

  • 本地嵌入式Tomcat环境下,用JDBC数据源配置的Spring Boot JPA应用运行正常
  • 部署到WebSphere应用服务器(WAS)改用JNDI数据源后,触发SQLCODE=-204错误(对象未找到)
    • 实体类@Table注解带schema时,报错SNEA_WPI.SNEA_AUTH为未定义名称
    • 移除schema仅保留@Table(name = "SNEA_AUTH")后,报错DB_USERNM.SNEA_AUTH为未定义名称
  • 本地仅在手动给Hibernate查询中的schema.tablename加双引号时,才会复现该错误

当前应用配置

spring.datasource.jndi-name=jdbc/potusdb
spring.jpa.properties.hibernate.default_schema=SNEA_WPI

spring.jpa.hibernate.naming-strategy=org.hibernate.cfg.EJB3NamingStrategy
spring.jpa.database-platform=org.hibernate.dialect.DB2Dialect
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.DB2Dialect

spring.jpa.properties.hibernate.format_sql=true
spring.jpa.properties.hibernate.show_sql=true

排查方向

  • 检查WAS数据源的默认schema设置:WAS的JNDI数据源可能覆盖Hibernate配置的default_schema,需确认数据源连接属性是否指定了默认schema,或当前用户的默认schema是否为DB_USERNM而非SNEA_WPI
  • 验证Hibernate命名策略的引号处理:EJB3NamingStrategy在WAS环境下可能自动给表名、schema加双引号,而DB2中带双引号的标识符区分大小写,导致匹配不到实际对象;可尝试添加spring.jpa.properties.hibernate.globally_quoted_identifiers=false禁用自动引号生成
  • 确认DB2对象权限与存在性:核实SNEA_WPI.SNEA_AUTH表确实存在,且WAS数据源使用的数据库用户有访问该表的权限;同时确认DB_USERNM schema下无此表
  • 对比本地与WAS的数据源参数:检查两端JDBC驱动版本、连接参数(如currentSchema)是否一致,本地JDBC可能通过URL指定了currentSchema=SNEA_WPI,而WAS数据源未配置该参数
  • 测试显式指定schema的写法:在@Table中显式写schema = "SNEA_WPI",同时确保名称大小写与数据库中对象完全匹配(DB2默认标识符不区分大小写,但加引号后会区分)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 15:43:22