Unknown column 'bsname' in 'field list'
项目中用struts来进行前台设计,其中对一个表单的添加修改操作,都用在一个action中,action如下:
AccountTable account = (AccountTable) request.getSession() .getAttribute("accountInfo"); flag = crmDao.getBusinessByName((String) f.get("bsname"),account); JzBusiness business = null; String bsid = request.getParameter("bsid"); if (bsid != null) { business = crmDao.getJzBusiness(bsid); boolean s = !business.getBsname().equals((String) f.get("bsname")); if (!business.getBsname().equals((String) f.get("bsname"))) { if (flag) { request.setAttribute("errormessage", "业务已经存在!"); return mapping.findForward("businessexit"); } } } else { if (flag) { request.setAttribute("errormessage", "业务已经存在!"); return mapping.findForward("businessexit"); } business = new JzBusiness(); } business.setBsname((String) f.get("bsname")); business.setComments((String) f.get("comment")); int type = Integer.parseInt((String) f.get("remindtype")); business.setRemindtype(type); business.setAccountTable(account); crmDao.addBusiness(business);<hibernate-mapping> <class name="cn.qdrk.strive.model.JzBusiness" table="jz_business"> <cache usage="read-write"/> <id name="bsId" type="java.lang.Integer"> <column name="bs_id" /> <generator class="native"></generator> </id> <many-to-one name="accountTable" class="cn.qdrk.strive.model.AccountTable" fetch="select"> <column name="account_id" /> </many-to-one> <property name="bsname" type="java.lang.String"> <column name="bsname" length="150" not-null="true" /> </property> <property name="comments" type="java.lang.String"> <column name="comments" length="200" /> </property> <property name="remindtype" type="java.lang.Integer"> <column name="remindtype" /> </property> <set name="jzKmessages" inverse="true"> <key> <column name="bs_id" /> </key> <one-to-many class="cn.qdrk.strive.model.JzKmessage" /> </set> </class></hibernate-mapping>
Caused by: org.hibernate.exception.SQLGrammarException: Could not execute JDBC batch updateCaused by: java.sql.BatchUpdateException: Unknown column 'bsname' in 'field list' at com.mysql.jdbc.PreparedStatement.executeBatchSerially(PreparedStatement.java:1666) at com.mysql.jdbc.PreparedStatement.executeBatch(PreparedStatement.java:1082)
hibernate配置文件有问题
Unknown column 'bsname' in 'field list' 指的是跟数据库的表字段不对应,看看是不是写错了,或者大小写敏感?
[解决办法]
把数据库中的表删掉再建试试看。。。
[解决办法]
先看看你的Hibernate映射中,'bsname' 这个列对不?
[解决办法]
把这个字段的非空属性都去掉
去掉非空试下,看成不成功.
[解决办法]
up
[解决办法]
看三个地方映射,po ,数据库字段,要么你就把数据库字段copy然后粘贴到vo和映射里面去
[解决办法]
细节问题
[解决办法]
将驱动更新到较高版本的试试!
[解决办法]
先debug下看看是在哪个用bsname的时候出错的,这样范围小一些,
可以定位问题出在哪个文件里面
[解决办法]
把数据库字段copy然后粘贴到vo和映射里面去
[解决办法]
大小写问题?如果是Linux。