org.springframework.jdbc.UncategorizedSQLException: Hibernate flushing: could not update: [com.SSH.Job#1]; uncategorized SQLException for SQL [update Job set copname=?, copmann=?, copcont=?, coptel=?, copmail=?, copfax=?, copaddr=?, copzip=?, copwww=?, copdesc=?, jobname=?, jobmann=?, jobaddr=?, jobnum=?, jobget=?, jobstr=?, jobend=?, jobage=?, jobag=?, jobexpe=?, joblang=?, jobodem=?, joboget=?, jobgrad=? where id=?]; SQL state [HY000]; error code [515]; [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]无法将 NULL 值插入列 'copmann',表 'heros.dbo.Job';该列不允许空值。UPDATE 失败。; nested exception is java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]无法将 NULL 值插入列 'copmann',表 'heros.dbo.Job';该列不允许空值。UPDATE 失败。
org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:83)
org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:80)
org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:80)
org.springframework.orm.hibernate3.HibernateTransactionManager.convertJdbcAccessException(HibernateTransactionManager.java:801)
org.springframework.orm.hibernate3.HibernateTransactionManager.convertHibernateAccessException(HibernateTransactionManager.java:787)
org.springframework.orm.hibernate3.HibernateTransactionManager.doCommit(HibernateTransactionManager.java:663)
org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:732)
org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:701)
org.springframework.transaction.interceptor.TransactionAspectSupport.commitTransactionAfterReturning(TransactionAspectSupport.java:321)
org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:116)
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
$Proxy17.Upda(Unknown Source)
com.SSH4.UpdateAction.upda(UpdateAction.java:269)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:597)
com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:452)
com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:291)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:254)
com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept
这是什么错啊

解决方案 »

  1.   

    所有字段 update 就要先将这条需要更新的数据查出来,得到数据对象后 给这个对象设置要更新的属性,然后执行update 
      

  2.   

    我是这样做的啊,我传入Action的值是空,不知道为什么
     <input type="text" name="job.copcont" id="textfield2" value="<%=request.getParameter("copcont") %>" />
    public String upda(){
    try{

    Job job=servse.getjob(id);
    job.setCopcont(copcont);
    servse.Upda(job);}
    catch(Exception e){
    e.printStackTrace();
    }
    return SUCCESS;
    }
    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName" value="com.microsoft.jdbc.sqlserver.SQLServerDriver"></property>
    <property name="url" value="jdbc:microsoft:sqlserver://127.0.0.1:1433;databaseName=heros"></property>
    <property name="username" value="sa"></property>
    <property name="password" value="123456"></property>
    </bean> 
     <bean id="sessionFactory"  
            class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">          <property name="dataSource">   
               <ref bean="dataSource" />   
           </property>   
           
           
           <property name="hibernateProperties">  
           <value>hibernate.dialect=org.hibernate.dialect.SQLServerDialect
           hibernate.hbm2ddl.auto=update
           hibernate.show_sql=true
       
        
           
           
           </value> 
             
           </property>   
         <property name="mappingResources">   
               <list>   
                   <value>com/SSH/Manager.hbm.xml</value>   
                   <value>com/SSH/Job.hbm.xml</value>
                      
                               </list>   
           </property>   
       </bean> 
         <context:annotation-config></context:annotation-config>
         
         
     
       <bean id="txManager"
     class="org.springframework.orm.hibernate3.HibernateTransactionManager">
      <property name="sessionFactory" ref="sessionFactory">
      </property>
     </bean>
      <tx:annotation-driven transaction-manager="txManager"/> 
    <bean id="people" class="com.SSH3.UsersBean"/>
    <bean id="pers" class="com.SSH4.UpdateAction" scope="prototype">
    </bean>
    </beans>
    <action name="up" class="pers" method="upda">
    <result name="success">/Succ.jsp</result>
    <result name="input">/Fail.jsp</result>
    </action>
    <hibernate-mapping package="com.spring" >    <class name="com.SSH.Job" table="Job">
            <id name="id">
          <generator class="native"></generator>
            </id>
            <property name="copname" />
            <property name="copmann"></property>
            <property name="copcont"></property>
            <property name="coptel"></property>
            <property name="copmail"></property>
             <property name="copfax"></property>
               <property name="copaddr"></property>
                <property name="copzip"></property>
                  <property name="copwww"></property>
                  <property name="copdesc"></property>
                   <property name="jobname"></property>
                     <property name="jobmann"></property>
                     <property name="jobaddr"></property>
                       <property name="jobnum"></property>
                       <property name="jobget"></property>
                        <property name="jobstr"></property>
                          <property name="jobend"></property>
                          
                           <property name="jobage"></property>
                           <property name="jobag"></property>
                            <property name="jobexpe"></property>
                             <property name="joblang"></property>
                             <property name="jobodem"></property>
                             <property name="joboget"></property>
                             <property name="jobgrad"></property> 
    </class>
    </hibernate-mapping>
    帮我看看我的配置有没错