Hibernate: insert into ceshifulong.dbo.T_CC_StockBill (FClassTypeID, FBillNo, FDate, FBillTypeID, FSupplyID, FPhone, FBiller, FCheckerID, FDBType, FDiffAmount, FDiffAcct, FEmpID, FDeptID, FBillerID, FCheckDate, FExplanation, FCustID, FFetchAdd, FFetchStyle, FFetchDate, FCheckerDate, FContact, FFax, FRollBackPrice, FUser, FStockInTypeID, FStockOutTypeID, FInvoiceType, FInvoiceNO, FCurPayAmount, FStatus, FPayTime, FPayOrderAmount, FAllAmount, FCheckAmount, FCurPayID, FAccountLimit, FAmount, FVoucherID, FUnCheckAmount, FClosed, FAddress, FAcctLimit, FAcctNo, FProcID, FCostVchID, FSettleLimitDate, FBalanceStyle, FCostAmount, FCurCheckAmount, FDiscountAcctId, FUserDefine1, FUserDefine2, FUserDefine3, FUserDefine4, FUserDefine5, FUserDefine6, FPrintCounts, FTotalProcurementCosts, FTitleTaxRate, FAllNetAmount, FSaveDate, FSettleAmount, FMultiAccount, FNeutralizeAmount) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
2011-04-15 09:15:44,265 [org.hibernate.util.JDBCExceptionReporter]-[WARN] SQL Error: 0, SQLState: null
2011-04-15 09:15:44,265 [org.hibernate.util.JDBCExceptionReporter]-[ERROR] 必须执行该语句才能获得结果。
org.hibernate.exception.GenericJDBCException: could not insert: [com.run.dao.bean.TCcStockBill]
at org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:82)
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:70)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
at org.hibernate.persister.entity.BasicEntityPersister.insert(BasicEntityPersister.java:1777)
at org.hibernate.persister.entity.BasicEntityPersister.insert(BasicEntityPersister.java:2178)
at org.hibernate.action.EntityIdentityInsertAction.execute(EntityIdentityInsertAction.java:34)
at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:239)
at org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:240)
at org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:160)
at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:95)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:184)
at org.hibernate.event.def.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:33)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:173)
at org.hibernate.event.def.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:27)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:69)
at org.hibernate.impl.SessionImpl.save(SessionImpl.java:481)
at org.hibernate.impl.SessionImpl.save(SessionImpl.java:476)
at com.run.dao.impl.MessengerDaoImpl.saveBill(MessengerDaoImpl.java:332)
at com.run.service.impl.MessengerServiceImpl.saveBill(MessengerServiceImpl.java:656)
at com.run.web.action.DealAction.execute(DealAction.java:249)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:419)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
at com.run.web.filter.EncodeFilter.doFilter(EncodeFilter.java:23)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:186)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
at java.lang.Thread.run(Thread.java:595)

解决方案 »

  1.   

    public ActionForward execute(ActionMapping mapping, ActionForm form,
    HttpServletRequest request, HttpServletResponse response) {
    IMessengerService messageservice=(IMessengerService)BeanFactory.getBean("messengerService");
    IMemberService memberservice=(IMemberService)BeanFactory.getBean("memberService");
    HttpSession session=request.getSession();
    Membercard membercard=(Membercard)session.getAttribute("membercard");
    String cardnum = membercard.getCardnumber();
    //System.out.println(cardnum);
    try{
    Card card = (Card)messageservice.findCardByCardnum(cardnum);
    Memberinfo memberinfo = (Memberinfo)memberservice.findMemberinfoByCardnum(cardnum);
    ShoppingCart cart=(ShoppingCart)session.getAttribute("cart");
    //获取积分比例
    Pointaction pointaction=memberservice.findPointactionByName("expense");
    Double radio = new Double(pointaction.getPoint());
    //获取会员的原来积分
    Long mpoint = memberinfo.getPoint();
    //计算此次积分行为产生的积分
    Double cost = cart.getCost();
    Long thispoint = new Long((long) Math.floor(cost/radio));
    //产生会员的新积分,并更新
    Long point = mpoint + thispoint;
    memberinfo.setPoint(point);
    memberservice.modifyMemberinfo(memberinfo);
    //将获取积分的信息记录下来
    Pointrecord  pointrecord = new Pointrecord();
    pointrecord.setMemberinfo(memberinfo);
    pointrecord.setPointaction(pointaction);
    pointrecord.setThispoint(thispoint);
    pointrecord.setReceivedate(new Date(System.currentTimeMillis()));
    memberservice.savePointRecord(pointrecord);
    //记录订单信息 
    TCcStockBill bill = new TCcStockBill();
    bill.setFclassTypeId(103002);
    bill.setFaccountLimit(0);
    bill.setFacctLimit("");
    bill.setFacctNo(0);
    bill.setFaddress("");
    bill.setFallAmount(cart.getCost());
    bill.setFallNetAmount(0.0);
    bill.setFamount(0.0);
    bill.setFbalanceStyle(0);
    bill.setFbiller(0);
    bill.setFbillerId(0);
    bill.setFbillNo("XSD201104");
    bill.setFbillTypeId(0);
    bill.setFcheckAmount(0.0);
    bill.setFcheckDate(null);
    bill.setFcheckerDate(null);
    bill.setFcheckerId(0);
    bill.setFclassTypeId(0);
    bill.setFclosed(0);
    bill.setFcontact("");
    bill.setFcostAmount(0.0);
    bill.setFcostVchId(0);
    bill.setFcurCheckAmount(0.0);
    bill.setFcurPayAmount(0.0);
    bill.setFcurPayId(0);
    bill.setFcustId(0);
    bill.setFdate(new Date());
    bill.setFdbtype("");
    bill.setFdeptId(0);
    bill.setFdiffAcct(0);
    bill.setFdiffAmount(0.0);
    bill.setFdiscountAcctId(0);
    bill.setFempId(0);
    bill.setFexplanation("");
    bill.setFfax("");
    bill.setFfetchAdd(0);
    bill.setFfetchDate(null);
    bill.setFfetchStyle(0);
    bill.setFinvoiceNo("");
    bill.setFinvoiceType("");
    bill.setFmultiAccount(Short.parseShort("0"));
    bill.setFneutralizeAmount(0.0);
    bill.setFpayOrderAmount(0.0);
    bill.setFpayTime(0);
    bill.setFphone("");
    bill.setFprintCounts(0);
    bill.setFprocId(0);
    bill.setFrollBackPrice(Byte.parseByte("0"));
    bill.setFsaveDate(null);
    bill.setFsettleAmount(0.0);
    bill.setFsettleLimitDate(new Date());
    bill.setFstatus(0);
    bill.setFstockInTypeId(0);
    bill.setFstockOutTypeId(0);
    bill.setFsupplyId(0);
    bill.setFtitleTaxRate(0.0);
    bill.setFtotalProcurementCosts(0.0);
    bill.setFunCheckAmount(0.0);
    bill.setFuser(0);
    bill.setFuserDefine1("");
    bill.setFuserDefine2("");
    bill.setFuserDefine3("");
    bill.setFuserDefine4("");
    bill.setFuserDefine5("");
    bill.setFuserDefine6("");
    bill.setFvoucherId(0);
    messageservice.saveBill(bill);
      

  2.   

    service 方法:
    public void saveBill(TCcStockBill bill) throws MessengerServiceException {
    HibernateTransaction ht=new HibernateTransaction();
    try{
    ht.beginTransaction();
    messagedao.saveBill(bill);
    ht.commit();
    }catch(Exception e){
    e.printStackTrace();
    ht.rollback();
    throw new MessengerServiceException(e.getMessage(),e);
    }
    }
      

  3.   

    Dao:
    public void saveBill(TCcStockBill bill) throws Exception {
    Session session=HibernateSessionFactory.currentSession2();
    session.save(bill);
    //session.flush();
    }映射文件:
    <hibernate-mapping>
        <class name="com.run.dao.bean.TCcStockBill" table="T_CC_StockBill" schema="dbo" catalog="ceshifulong">
            <id name="fid" type="java.lang.Integer">
                <column name="FID" />
                <generator class="native" />
            </id>
            <property name="fclassTypeId" type="java.lang.Integer">
                <column name="FClassTypeID"/>
            </property>
            <property name="fbillNo" type="java.lang.String">
                <column name="FBillNo"/>
            </property>
            <property name="fdate" type="java.util.Date">
                <column name="FDate" length="23" />
            </property>
            <property name="fbillTypeId" type="java.lang.Integer">
                <column name="FBillTypeID"/>
            </property>
            <property name="fsupplyId" type="java.lang.Integer">
                <column name="FSupplyID"/>
            </property>
            <property name="fphone" type="java.lang.String">
                <column name="FPhone" length="80"/>
            </property>
            <property name="fbiller" type="java.lang.Integer">
                <column name="FBiller"/>
            </property>
            <property name="fcheckerId" type="java.lang.Integer">
                <column name="FCheckerID"/>
            </property>
            <property name="fdbtype" type="java.lang.String">
                <column name="FDBType"/>
            </property>
            <property name="fdiffAmount" type="java.lang.Double">
                <column name="FDiffAmount" precision="23" scale="10"/>
            </property>
            <property name="fdiffAcct" type="java.lang.Integer">
                <column name="FDiffAcct"/>
            </property>
            <property name="fempId" type="java.lang.Integer">
                <column name="FEmpID"/>
            </property>
            <property name="fdeptId" type="java.lang.Integer">
                <column name="FDeptID"/>
            </property>
            <property name="fbillerId" type="java.lang.Integer">
                <column name="FBillerID"/>
            </property>
            <property name="fcheckDate" type="java.util.Date">
                <column name="FCheckDate" length="23" />
            </property>
            <property name="fexplanation" type="java.lang.String">
                <column name="FExplanation"/>
            </property>
            <property name="fcustId" type="java.lang.Integer">
                <column name="FCustID"/>
            </property>
            <property name="ffetchAdd" type="java.lang.Integer">
                <column name="FFetchAdd"/>
            </property>
            <property name="ffetchStyle" type="java.lang.Integer">
                <column name="FFetchStyle"/>
            </property>
            <property name="ffetchDate" type="java.util.Date">
                <column name="FFetchDate" length="23" />
            </property>
            <property name="fcheckerDate" type="java.util.Date">
                <column name="FCheckerDate" length="23" />
            </property>
            <property name="fcontact" type="java.lang.String">
                <column name="FContact" length="80"/>
            </property>
            <property name="ffax" type="java.lang.String">
                <column name="FFax" length="80"/>
            </property>
            <property name="frollBackPrice" type="java.lang.Byte">
                <column name="FRollBackPrice"/>
            </property>
            <property name="fuser" type="java.lang.Integer">
                <column name="FUser"/>
            </property>
            <property name="fstockInTypeId" type="java.lang.Integer">
                <column name="FStockInTypeID"/>
            </property>
            <property name="fstockOutTypeId" type="java.lang.Integer">
                <column name="FStockOutTypeID"/>
            </property>
            <property name="finvoiceType" type="java.lang.String">
                <column name="FInvoiceType"/>
            </property>
            <property name="finvoiceNo" type="java.lang.String">
                <column name="FInvoiceNO" length="80"/>
            </property>
            <property name="fcurPayAmount" type="java.lang.Double">
                <column name="FCurPayAmount" precision="23" scale="10"/>
            </property>
            <property name="fstatus" type="java.lang.Integer">
                <column name="FStatus"/>
            </property>
            <property name="fpayTime" type="java.lang.Integer">
                <column name="FPayTime"/>
            </property>
            <property name="fpayOrderAmount" type="java.lang.Double">
                <column name="FPayOrderAmount" precision="23" scale="10"/>
            </property>
            <property name="fallAmount" type="java.lang.Double">
                <column name="FAllAmount" precision="23" scale="10"/>
            </property>
            <property name="fcheckAmount" type="java.lang.Double">
                <column name="FCheckAmount" precision="23" scale="10"/>
            </property>
            <property name="fcurPayId" type="java.lang.Integer">
                <column name="FCurPayID"/>
            </property>
            <property name="faccountLimit" type="java.lang.Integer">
                <column name="FAccountLimit"/>
            </property>
            <property name="famount" type="java.lang.Double">
                <column name="FAmount" precision="23" scale="10"/>
            </property>
            <property name="fvoucherId" type="java.lang.Integer">
                <column name="FVoucherID"/>
            </property>
            <property name="funCheckAmount" type="java.lang.Double">
                <column name="FUnCheckAmount" precision="23" scale="10"/>
            </property>
            <property name="fclosed" type="java.lang.Integer">
                <column name="FClosed"/>
            </property>
            <property name="faddress" type="java.lang.String">
                <column name="FAddress"/>
            </property>
            <property name="facctLimit" type="java.lang.String">
                <column name="FAcctLimit"/>
            </property>
            <property name="facctNo" type="java.lang.Integer">
                <column name="FAcctNo"/>
            </property>
            <property name="fprocId" type="java.lang.Integer">
                <column name="FProcID"/>
            </property>
            <property name="fcostVchId" type="java.lang.Integer">
                <column name="FCostVchID" />
            </property>
            <property name="fsettleLimitDate" type="java.util.Date">
                <column name="FSettleLimitDate" length="23" />
            </property>
            <property name="fbalanceStyle" type="java.lang.Integer">
                <column name="FBalanceStyle"/>
            </property>
            <property name="fcostAmount" type="java.lang.Double">
                <column name="FCostAmount" precision="28" scale="10"/>
            </property>
            <property name="fcurCheckAmount" type="java.lang.Double">
                <column name="FCurCheckAmount" precision="23" scale="10"/>
            </property>
            <property name="fdiscountAcctId" type="java.lang.Integer">
                <column name="FDiscountAcctId"/>
            </property>
            <property name="fuserDefine1" type="java.lang.String">
                <column name="FUserDefine1" length="500"/>
            </property>
            <property name="fuserDefine2" type="java.lang.String">
                <column name="FUserDefine2" length="500"/>
            </property>
            <property name="fuserDefine3" type="java.lang.String">
                <column name="FUserDefine3" length="500"/>
            </property>
            <property name="fuserDefine4" type="java.lang.String">
                <column name="FUserDefine4" length="500"/>
            </property>
            <property name="fuserDefine5" type="java.lang.String">
                <column name="FUserDefine5" length="500"/>
            </property>
            <property name="fuserDefine6" type="java.lang.String">
                <column name="FUserDefine6" length="500"/>
            </property>
            <property name="fprintCounts" type="java.lang.Integer">
                <column name="FPrintCounts"/>
            </property>
            <property name="ftotalProcurementCosts" type="java.lang.Double">
                <column name="FTotalProcurementCosts" precision="23" scale="10"/>
            </property>
            <property name="ftitleTaxRate" type="java.lang.Double">
                <column name="FTitleTaxRate" precision="23" scale="10"/>
            </property>
            <property name="fallNetAmount" type="java.lang.Double">
                <column name="FAllNetAmount" precision="23" scale="10"/>
            </property>
            <property name="fsaveDate" type="java.util.Date">
                <column name="FSaveDate" length="23" />
            </property>
            <property name="fsettleAmount" type="java.lang.Double">
                <column name="FSettleAmount" precision="23" scale="10"/>
            </property>
            <property name="fmultiAccount" type="java.lang.Short">
                <column name="FMultiAccount"/>
            </property>
            <property name="fneutralizeAmount" type="java.lang.Double">
                <column name="FNeutralizeAmount" precision="23" scale="10"/>
            </property>
        </class>
    </hibernate-mapping>
      

  4.   

    没看到你用了hibernate
    贴struts的代码作甚
      

  5.   

    service 和 dao 层 都是用的hibernate啊
      

  6.   

    不建议你这么写
    操纵双表出现2个事务 万一后面的订单表出异常只能回滚一个
    不了解hibernate的native方式
    但是不一概去bill.setFclassTypeId(103002);
    set主键吧 
    自己找找原因
      

  7.   

    <?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"><!-- Generated by MyEclipse Hibernate Tools.                   -->
    <hibernate-configuration><session-factory>
    <property name="myeclipse.connection.profile">memData</property>
    <property name="connection.url">
    jdbc:sqlserver://localhost:1433;databaseName=mem
    </property>
    <property name="connection.username">sa</property>
    <property name="connection.password">123</property>
    <property name="connection.driver_class">
    com.microsoft.sqlserver.jdbc.SQLServerDriver
    </property>
    <property name="dialect">
    org.hibernate.dialect.SQLServerDialect
    </property>
    <property name="show_sql">true</property>
    <mapping resource="com/run/dao/bean/Memberinfo.hbm.xml" />
    <mapping resource="com/run/dao/bean/Memberspace.hbm.xml" />
    <mapping resource="com/run/dao/bean/Graderecord.hbm.xml" />
    <mapping resource="com/run/dao/bean/Province.hbm.xml" />
    <mapping resource="com/run/dao/bean/Expenserecord.hbm.xml" />
    <mapping resource="com/run/dao/bean/Pointaction.hbm.xml" />
    <mapping resource="com/run/dao/bean/Pointrecord.hbm.xml" />
    <mapping resource="com/run/dao/bean/Wares.hbm.xml" />
    <mapping resource="com/run/dao/bean/Orderform.hbm.xml" />
    <mapping resource="com/run/dao/bean/Orderline.hbm.xml" />
    <mapping resource="com/run/dao/bean/Cardtype.hbm.xml" />
    <mapping resource="com/run/dao/bean/Card.hbm.xml" />
    <mapping resource="com/run/dao/bean/Payrecord.hbm.xml" />
    <mapping resource="com/run/dao/bean/Role.hbm.xml" />
    <mapping resource="com/run/dao/bean/Permission.hbm.xml" />
    <mapping resource="com/run/dao/bean/Worker.hbm.xml" />
    <mapping resource="com/run/dao/bean/Pointexchange.hbm.xml" />
    <mapping resource="com/run/dao/bean/Pointexchangerecord.hbm.xml" />
    <mapping resource="com/run/dao/bean/Pointexchangeline.hbm.xml" />
    <mapping resource="com/run/dao/bean/Menu.hbm.xml" />
    <mapping resource="com/run/dao/bean/TbQueue.hbm.xml" />
    </session-factory>
    这是映射文件,其中<mapping resource="com/run/dao/bean/TCcStockBill.hbm.xml" />
    <mapping resource="com/run/dao/bean/TMeasureUnit.hbm.xml" />
    <mapping resource="com/run/dao/bean/TUnitGroup.hbm.xml" />
    <mapping resource="com/run/dao/bean/TCcStockBillEntry.hbm.xml" />
    这4个是 另外一个数据库里面的表 ,建了映射关系映射了过来。