错误信息:
2009-01-15 14:20:15  WARN JDBCExceptionReporter:71 - SQL Error: 0, SQLState: HY000
2009-01-15 14:20:15 ERROR JDBCExceptionReporter:72 - [Microsoft][SQLServer 2000 Driver for JDBC]The year, 2, is outside the range allowed by the SQL Server.
2009-01-15 14:20:15 ERROR AbstractFlushingEventListener:300 - Could not synchronize database state with session
org.hibernate.exception.GenericJDBCException: Could not execute JDBC batch update
at org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:103)
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:91)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:202)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:235)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:140)
at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:297)
at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27)
at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:985)
at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:333)
at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:106)
at com.jxc.util.HibernateUtil.commitTransaction(HibernateUtil.java:105)
at com.jxc.util.Connection.commitTransaction(Connection.java:23)
at com.jxc.receive.LoadMoneyImpl.loadDate(LoadMoneyImpl.java:167)
at com.jxc.receive.LoadMoneyAction.load(LoadMoneyAction.java:157)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:280)
at org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:216)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:484)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
at com.jxc.util.PubActionServlet.process(PubActionServlet.java:37)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525)
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 org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
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:261)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:581)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Unknown Source)
Caused by: com.microsoft.jdbc.base.BaseBatchUpdateException: [Microsoft][SQLServer 2000 Driver for JDBC]The year, 2, is outside the range allowed by the SQL Server.
at com.microsoft.jdbc.base.BasePreparedStatement.executeBatchEmulation(Unknown Source)
at com.microsoft.jdbc.base.BasePreparedStatement.executeBatch(Unknown Source)
at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.executeBatch(NewProxyPreparedStatement.java:1723)
at org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:58)
at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:195)
... 36 more

解决方案 »

  1.   

    hibernate 配置文件:
    <?xml version='1.0' encoding='utf-8'?>
    <!DOCTYPE hibernate-configuration PUBLIC
    "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
    "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"><hibernate-configuration>
    <session-factory>
    <!-- properties -->
            <property name="dialect">org.hibernate.dialect.SQLServerDialect</property>
            <property name="show_sql">true</property>
            <property name="use_outer_join">true</property>        <property name="hibernate.generate_statistics">true</property>
            <property name="hibernate.cache.use_second_level_cache">true</property>
            <property name="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</property>
            <property name="hibernate.jdbc.batch_size">20</property>
    <!--<property name="hibernate.hbm2dll.auto">create-drop</property>-->        <property name="hibernate.hbm2dll.auto">update</property>
    <!--
      <property name="connection.username">sa</property>
            <property name="connection.url">jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=yafu;SelectMethod=cursor</property>
            <property name="dialect">org.hibernate.dialect.SQLServerDialect</property>
            <property name="connection.password">123</property>
            <property name="connection.driver_class">com.microsoft.jdbc.sqlserver.SQLServerDriver</property>
      -->          <property name="hibernate.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>
            <property name="connection.driver_class">com.microsoft.jdbc.sqlserver.SQLServerDriver</property>
            <property name="connection.url">jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=yafu;SelectMethod=cursor</property>
            <property name="connection.username">sa</property>
            <property name="connection.password">123</property>
             <property name="hibernate.c3p0.max_size">30</property>
            <property name="hibernate.c3p0.min_size">2</property>
            <property name="hibernate.c3p0.timeout">5000</property>
            <property name="hibernate.c3p0.max_statements">100</property>
            <property name="hibernate.c3p0.idle_test_period">3000</property>
            <property name="hibernate.c3p0.acquire_increment">2</property>
            <property name="hibernate.c3p0.validate">true</property>
    <!-- Mapping files -->
    <mapping resource="com/jxc/xml/operator.hbm.xml" />
    <mapping resource="com/jxc/xml/function.hbm.xml" />
    <mapping resource="com/jxc/xml/orderNo.hbm.xml" />
    <mapping resource="com/jxc/xml/receive.hbm.xml" />
    <mapping resource="com/jxc/xml/baseInfo.hbm.xml" />
    <mapping resource="com/jxc/xml/caiwu.hbm.xml" />
    <mapping resource="com/jxc/xml/hr.hbm.xml" /></session-factory>
    </hibernate-configuration>
      

  2.   

    <class name="com.jxc.receive.pojo.ReceiveOrder" table="YW_RECEIVE_ORDER" lazy="true">
        <cache usage="read-write"/>
        <id name="id" column="ID">
    <generator class="native"/>
        </id>
         <!-- 放款状态 -->
    <property name="loanStateId" column="LOAN_STATE_ID" type="long"/>
    <!-- 放款状态 -->
    <property name="loanStateName" column="LOAN_STATE_NAME" type="string"/>
    <!-- 放款日期 -->
    <property name="loanDate" column="LOAN_DATE" type="timestamp"/>
    <!-- 放款受理人ID -->
    <property name="loanWriterId" column="LOAN_WRITER_ID" type="long"/>
    <!-- 放款受理人名称-->
    <property name="loanWriterName" column="LOAN_WRITER_NAME" type="string"/>
    <!-- 放款备注 -->
    <property name="loanMemo" column="LOAN_MEMO" type="string"/>

      </class>
      

  3.   

    执行方法:
    public ReceiveOrder loadDate(ReceiveOrder rec) throws Exception{
    try {
    Session session = Connection.openTransaction();
    if(rec.getBonusInfo()!=null){
    session.save(rec.getBonusInfo());
    }

    session.update(rec);
    BankInvoice bi = rec.getBankInvoice();
    if(bi != null){
    bi.setSerialNo(null);
    bi.setMoney(0L);
    bi.setInvoiceDate(null);
    bi.setAccountDate(null);
    bi.setStateId(Constants.BANK_INVOICE_ADD_STATE_ID);
    bi.setStateName(Constants.BANK_INVOICE_ADD_STATE_NAME);
    bi.setMemo(null);
    session.update(bi);
    }




    Connection.commitTransaction();
    } catch (Exception e) {
    Connection.rollback();
    e.printStackTrace();
    throw new Exception("设置放款失败!");
    }
    return rec;
    }
      

  4.   

    检查一下你的ReceiveOrder.loanDate中的值,得学会看错误信息!!!!
    2009-01-15 14:20:15 ERROR JDBCExceptionReporter:72 - [Microsoft][SQLServer 2000 Driver for JDBC]The year, 2, is outside the range allowed by the SQL Server.at com.jxc.receive.LoadMoneyImpl.loadDate(LoadMoneyImpl.java:167)
      

  5.   

    先谢谢啦! loandate中值我看过啦 出错数据的值和成功数据值都一样的格式  所以觉得  很奇怪   一会我把数据信息发出来你看看
      

  6.   

    能修改数据的loandate值:
    recLoanDateThu Jan 08 00:00:01 CST 2009Hibernate: select bankinvoic0_.ID as ID82_0_, bankinvoic0_.SERIAL_NO as SERIAL2_82_0_, bankinvoic0_.INVOICE_DATE as INVOICE3_82_0_, bankinvoic0_.ACCOUNT_DATE as ACCOUNT4_82_0_, bankinvoic0_.MONEY as MONEY82_0_, bankinvoic0_.STATE_ID as STATE6_82_0_, bankinvoic0_.STATE_NAME as STATE7_82_0_, bankinvoic0_.MEMO as MEMO82_0_ from CW_BANK_INVOICE bankinvoic0_ where bankinvoic0_.ID=?
    Hibernate: update YW_RECEIVE_ORDER set SERIAL_NO=?, RECEIVE_DATE=?, WRITER_DATE=?, SALES_ID=?, 
    出错信息的loandate值:
    recLoanDateTue Jan 06 00:00:01 CST 2009
    Hibernate: select bankinvoic0_.ID as ID82_0_, bankinvoic0_.SERIAL_NO as SERIAL2_82_0_, bankinvoic0_.INVOICE_DATE as INVOICE3_82_0_, bankinvoic0_.ACCOUNT_DATE as ACCOUNT4_82_0_, bankinvoic0_.MONEY as MONEY82_0_, bankinvoic0_.STATE_ID as STATE6_82_0_, bankinvoic0_.STATE_NAME as STATE7_82_0_, bankinvoic0_.MEMO as MEMO82_0_ from CW_BANK_INVOICE bankinvoic0_ where bankinvoic0_.ID=?
    Hibernate: update YW_RECEIVE_ORDER set SERIAL_NO=?, RECEIVE_DATE=?, WRITER