今天让我郁闷的一个问题,再开发一个***系统的时候,我采用的是struts2+Hibernate3+spring2.5进行开发的,但是就莫名奇妙的出现了一个错误:bug的信息如下:
org.springframework.beans.NotWritablePropertyException:
Invalid property 'tStruct' of bean class [com.ac.equipment.dm.Bus]:
Bean property 'tStruct' is not writable or has an invalid setter method.
Did you mean 'tstruct'?
at org.springframework.beans.BeanWrapperImpl.setPropertyValue(BeanWrapperImpl.java:805)
at org.springframework.beans.BeanWrapperImpl.setPropertyValue(BeanWrapperImpl.java:636)
at com.ac.input.dao.impl.BaseDaoImpl.processObject(BaseDaoImpl.java:332)
at com.ac.input.dao.impl.BaseDaoImpl$3.processRow(BaseDaoImpl.java:263)
at org.springframework.jdbc.core.JdbcTemplate$RowCallbackHandlerResultSetExtractor.extractData(JdbcTemplate.java:1309)
at org.springframework.jdbc.core.JdbcTemplate$1QueryStatementCallback.doInStatement(JdbcTemplate.java:423)
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:371)
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:433)
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:437)
at com.ac.input.dao.impl.BaseDaoImpl.getObjects(BaseDaoImpl.java:252)
..........................................
其实我的错误原因是在我的Bean中有一个 private String tStruct的属性,我在对应的setter和getter方法中,我是这样写:
public void setTStruct(String tStruct){------------}
public String getTStruct(){-------------}
其实当自动生成代码的时候并不是这样 ,而是settStruct() gettStruct();所以一定要注意第一个单词的大小写的问题 。
还有在使用hibernate+spring整合开发的时候,一定要注意注入的单词大小写的规范,这一点也在我其他的blog中有说明,希望对你有所帮助!