Struts 集成Hibernate修改数据时 argument type mismatch异常,请高手们解决

East271536394 2009-01-04 07:55:30
Hibernate: select cstcustome0_.cust_no as cust1_52_0_, cstcustome0_.cust_name as cust2_52_0_, cstcustome0_.cust_region as cust3_52_0_, cstcustome0_.cust_manager_id as cust4_52_0_, cstcustome0_.cust_manager_name as cust5_52_0_, cstcustome0_.cust_level as cust6_52_0_, cstcustome0_.cust_level_label as cust7_52_0_, cstcustome0_.cust_satisfy as cust8_52_0_, cstcustome0_.cust_credit as cust9_52_0_, cstcustome0_.cust_addr as cust10_52_0_, cstcustome0_.cust_zip as cust11_52_0_, cstcustome0_.cust_tel as cust12_52_0_, cstcustome0_.cust_fax as cust13_52_0_, cstcustome0_.cust_website as cust14_52_0_, cstcustome0_.cust_licence_no as cust15_52_0_, cstcustome0_.cust_chieftain as cust16_52_0_, cstcustome0_.cust_bankroll as cust17_52_0_, cstcustome0_.cust_turnover as cust18_52_0_, cstcustome0_.cust_bank as cust19_52_0_, cstcustome0_.cust_bank_account as cust20_52_0_, cstcustome0_.cust_local_tax_no as cust21_52_0_, cstcustome0_.cust_national_tax_no as cust22_52_0_, cstcustome0_.cust_status as cust23_52_0_ from crm.dbo.cst_customer cstcustome0_ where cstcustome0_.cust_no=?
java.lang.IllegalArgumentException: Cannot invoke com.east.crm.entity.CstCustomer.setCstLinkmans - argument type mismatch
at org.apache.commons.beanutils.PropertyUtilsBean.invokeMethod(PropertyUtilsBean.java:1778)
at org.apache.commons.beanutils.PropertyUtilsBean.setSimpleProperty(PropertyUtilsBean.java:1759)
at org.apache.commons.beanutils.PropertyUtilsBean.setNestedProperty(PropertyUtilsBean.java:1648)
at org.apache.commons.beanutils.PropertyUtilsBean.setProperty(PropertyUtilsBean.java:1677)
at org.apache.commons.beanutils.BeanUtilsBean.setProperty(BeanUtilsBean.java:1022)
at org.apache.commons.beanutils.BeanUtilsBean.populate(BeanUtilsBean.java:811)
at org.apache.commons.beanutils.BeanUtils.populate(BeanUtils.java:298)
at com.east.crm.dao.impl.CstCustomerDaoImpl.updateCustomer(CstCustomerDaoImpl.java:98)
at com.east.crm.biz.CstCustomerBiz.updateCustomer(CstCustomerBiz.java:31)
at com.east.crm.web.action.CstCustomerAction.updateCustomer(CstCustomerAction.java:148)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:270)
at org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:187)
at org.apache.struts.actions.MappingDispatchAction.execute(MappingDispatchAction.java:169)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at com.east.crm.common.EncodingFilter.doFilter(EncodingFilter.java:33)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:228)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:216)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:634)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:445)
at java.lang.Thread.run(Thread.java:619)
com.east.crm.common.SystemException: 修改客户信息报异常!
------------------------------------------------------------------
private String custLocalTaxNo;
private String custNationalTaxNo;
private String custStatus;
private Set cstActivities = new HashSet(0);
private Set cstLinkmans = new HashSet(0);
................................等变量
public Set getCstLinkmans() {
return this.cstLinkmans;
}

public void setCstLinkmans(Set cstLinkmans) {
this.cstLinkmans = cstLinkmans;
}
.........................等set,get方法
---------------------------------------------------------
Action中的方法
public ActionForward updateCustomer(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
String path = Constants.SUCCESS_PATH;
try {
CstCustomerActionForm customerForm = (CstCustomerActionForm)form;
CstCustomer customer = customerForm.getCustomer();
System.out.println(customer.getCustNo()+"=="+customer.getCustManagerName()+"===="+customer.getCustSatisfy());
boolean flage = customerBiz.updateCustomer(customer);
if (!flage){
path=Constants.EXCEPTION_PATH;
request.setAttribute(Constants.ERROR_MSG,"修改客户出错");
}
} catch (Exception se) {
path = Constants.EXCEPTION_PATH;
se.printStackTrace();
request.setAttribute(Constants.ERROR_MSG, " 修改客户信息报异常!");
}
return mapping.findForward(path);
}
----------------------------------------------------------------
public boolean updateCustomer(CstCustomer customer)
throws Exception {
Session session = null;
Transaction tran = null;
int result = 0;
try {
session = HibernateUtils.getSession();
tran = session.beginTransaction();
CstCustomer customers = (CstCustomer) session.get(
CstCustomer.class, customer.getCustNo());
BeanUtils.populate(customers, BeanUtils.describe(customer));
session.update(customers);
tran.commit();
result++;
} catch (Exception se) {
se.printStackTrace();
tran.rollback();
throw new SystemException("修改客户信息报异常!");
} finally {
HibernateUtils.closeSession(session);
}
return result > 0 ? true : false;
}
...全文
480 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
fariy086 2010-03-08
  • 打赏
  • 举报
回复
enctype="multipart/form-data">这个没加了吧
East271536394 2009-01-04
  • 打赏
  • 举报
回复
改了一这个,就对了,

public boolean updateCustomer(CstCustomer customer)
throws Exception {
Session session = null;
Transaction tran = null;
int result = 0;
try {
session = HibernateUtils.getSession();
tran = session.beginTransaction();
CstCustomer customers = (CstCustomer) session.get(
CstCustomer.class, customer.getCustNo());
//不能用这个来做.
//BeanUtils.populate(customers, BeanUtils.describe(customer));
customers.setCustNo(customer.getCustNo());
customers.setCustName(customer.getCustName());
customers.setCustRegion(customer.getCustRegion());
customers.setCustManagerId(customer.getCustManagerId());
customers.setCustManagerName(customer.getCustManagerName());
customers.setCustLevel(customer.getCustLevel());
customers.setCustLevelLabel(customer.getCustLevelLabel());
customers.setCustSatisfy(customer.getCustSatisfy());
customers.setCustCredit(customer.getCustCredit());
customers.setCustAddr(customer.getCustAddr());
customers.setCustZip(customer.getCustZip());
customers.setCustTel(customer.getCustTel());
customers.setCustFax(customer.getCustFax());
customers.setCustWebsite(customer.getCustWebsite());
customers.setCustLicenceNo(customer.getCustLicenceNo());
customers.setCustChieftain(customer.getCustChieftain());
customers.setCustBankroll(customer.getCustBankroll());
customers.setCustTurnover(customer.getCustTurnover());
customers.setCustBank(customer.getCustBank());
customers.setCustBankAccount(customer.getCustBankAccount());
customers.setCustLocalTaxNo(customer.getCustLocalTaxNo());
customer.setCustNationalTaxNo(customer.getCustNationalTaxNo());
customers.setCustStatus(customer.getCustStatus());
customers.setCstActivities(customer.getCstActivities());
customers.setCstLinkmans(customer.getCstLinkmans());
customers.setCstServices(customer.getCstServices());

session.update(customers);
tran.commit();
result++;
} catch (Exception se) {
se.printStackTrace();
tran.rollback();
throw new SystemException("修改客户信息报异常!");
} finally {
HibernateUtils.closeSession(session);
}
return result > 0 ? true : false;
}
noenoughmemory 2009-01-04
  • 打赏
  • 举报
回复
up
xinji84 2009-01-04
  • 打赏
  • 举报
回复
at com.east.crm.dao.impl.CstCustomerDaoImpl.updateCustomer(CstCustomerDaoImpl.java:98)
at com.east.crm.biz.CstCustomerBiz.updateCustomer(CstCustomerBiz.java:31)
at com.east.crm.web.action.CstCustomerAction.updateCustomer(CstCustomerAction.java:148)
首先你注重看一下这里三个提示的地方,再就是可能最重要的问题是:
java.lang.IllegalArgumentException: Cannot invoke com.east.crm.entity.CstCustomer.setCstLinkmans - argument type mismatch提示是调用这个set方法出错类型不匹配,
还有你的两个实体类,是一对多的关系,把那两个类的代码和映射文件都贴出来,看一下
East271536394 2009-01-04
  • 打赏
  • 举报
回复
System.out.println(customer.getCustNo()+"=="+customer.getCustManagerName()+"===="+customer.getCustSatisfy());
这句也打出来了,也是对的,
East271536394 2009-01-04
  • 打赏
  • 举报
回复
是一对多的表之间的关系,,,请高手帮帮我

67,516

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧