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;
}

解决方案 »

  1.   

    System.out.println(customer.getCustNo()+"=="+customer.getCustManagerName()+"===="+customer.getCustSatisfy()); 
    这句也打出来了,也是对的,
      

  2.   

    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方法出错类型不匹配,
    还有你的两个实体类,是一对多的关系,把那两个类的代码和映射文件都贴出来,看一下
      

  3.   

    改了一这个,就对了,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;
    }
      

  4.   

    enctype="multipart/form-data">这个没加了吧