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

Spring 4.x升5.2.24、Hibernate 4升5.3.20后Bean属性读取异常求助

问题排查与解决方案

1. 校验JavaBean规范的getter方法命名

Spring 5.x 对JavaBean属性访问的规则比4.x更严格,严格遵循JavaBean规范:

  • 若属性名前两个字符均为大写(如SOURCE_SYSTEM),对应的getter方法必须为getSOURCE_SYSTEM(),而非getSourceSystem()
  • 若属性名首字符大写、次字符小写,getter需将属性名首字母小写后拼接(如属性SourceSystem对应getSourceSystem())

检查RefundProcessingModel中SOURCE_SYSTEM的getter方法是否符合规范:

// 正确示例(匹配属性SOURCE_SYSTEM)
public String getSOURCE_SYSTEM() {
    return SOURCE_SYSTEM;
}

// 错误写法(Spring 5.x无法识别)
public String getSourceSystem() {
    return SOURCE_SYSTEM;
}

2. 检查Hibernate映射文件(hbm.xml)配置

Hibernate 5.3对实体映射的校验更严格:

  • 确认<property>标签的name属性与实体类属性名完全一致(含大小写):
    <!-- 正确配置:name值与实体属性SOURCE_SYSTEM完全匹配 -->
    <property name="SOURCE_SYSTEM" column="SOURCE_SYSTEM" type="string"/>
    
  • 若映射中指定了access属性,确认其合理性:
    • access="field":直接访问字段,无需getter,但Spring的BeanWrapper仍会校验getter(若该Bean在Spring上下文使用)
    • access="property":通过getter/setter访问,必须保证方法符合规范

3. 排查Spring上下文对该Bean的使用场景

若该Bean用于Spring表单绑定、数据绑定(如@ModelAttribute、DataBinder),Spring会通过BeanWrapper解析属性:

  • 确认视图层(如JSP、Thymeleaf)是否直接引用了SOURCE_SYSTEM属性,且对应的getter不符合规范
  • 临时方案可配置DataBinder忽略该属性校验,但优先建议修正getter方法以符合规范

4. 验证实体类字段的访问权限

确保SOURCE_SYSTEM字段为private修饰,且getter方法为public修饰,Spring与Hibernate均需访问该方法。


若以上步骤未解决问题,请补充以下信息:

  • RefundProcessingModel中SOURCE_SYSTEM属性的完整代码(字段定义+getter/setter)
  • hbm.xml中该属性的映射片段
  • 完整的异常堆栈日志

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 07:10:12