仕事のバグ:ループの内側には、オブジェクトを作成し、ループのためのオブジェクトを作成するために

このブログを書くの主な役割は、このような低レベルのエラーは良く繰り返さない後、メモリまで自分自身を放棄することです。

エラーログを見てください:

1 2019年12月25日18:12:58.197 DEBUG 12332 --- [IO-8080-EXEC-10 ] com.sinosoft.utility.SQLString:进入更新后的InsPart
 2 2019年12月25日18:12:58.197 DEBUG 12332 --- [IO-8080-EXEC-10] com.sinosoft.utility.SQLString:MSQL:LPEdorItem(EdorAcceptNo、EdorNo、EdorCode、PolicyNo、得意先、EdorState、ChangeMoney、BillMoney、EdorValiDate、創作者、オペレータ、MAKEDATEへの挿入、MakeTime、ModifyDate、ModifyTime)の値( 'MGU201912461201912358'、 'EN20191225026'、 'RE'、 'MGU201912461'、 '000000'、 '10'、1000.0,0.0、 '2019年12月25日'、 '001'、」 001' 、 '2019年12月25日'、 '18時12分41秒'、 '2019年12月25日'、 '18時12分41秒' 32019年12月25日18:12:58.246 DEBUG 12332 --- [IO-8080-EXEC-10] com.sinosoft.utility.SQLString:MSQL:LPDebitNoteから削除ここEdorNo = 'EN20191225026'とDebitNoteNo = 'DN0000000234'
 4 2019年12月25日18:12:58.246 DEBUG 12332 --- [IO-8080-EXEC-10] com.sinosoft.utility.SQLString:MSQL:LPDebitNoteから削除ここEdorNo = 'EN20191225026'とDebitNoteNo = 'DN0000000234'
 5 2019年12月25日18:12:58.372 DEBUG 12332 --- [IO-8080-EXEC-10 ] com.sinosoft.utility.SQLString:进入更新后的InsPart
 62019年12月25日18:12:58.372 DEBUG 12332 --- [IO-8080-EXEC-10] com.sinosoft.utility.SQLString:MSQL:LPDebitNote(EdorNo、EdorCode、DebitNoteNo、DNTAmount、DebitNoteTitle、PaidAmntへの挿入、 PaidCurr、PayDate、ステータス、VerificationAnt、DebitNoteMode、SubInsurerId、BankAccId、RiskCode、作成者、オペレータ、MAKEDATE、MakeTime、ModifyDate、ModifyTime)の値( 'EN20191225026'、 'RE'、 'DN0000000234'、1000.0、'22' 、1000.0、 '01'、 '2020年1月24日'、 '01'、0.0、'04' 、 'ZCB-003から111'、 '888888'、 'X151'、 '001'、 '001'、 '2019から12 -25' 、 '午後六時12分41秒'、 '2019年12月25日'、 '午後六時12分41秒' 7 2019年12月25日18:12:58.372 DEBUG 12332 --- [IO-8080-EXEC -10 ] com.sinosoft.utility.SQLString:进入更新后的InsPart
 8 2019年12月25日18:12:58.372 DEBUG 12332 --- [IO-8080-EXEC-10] com.sinosoft.utility.SQLString:MSQL:LPDebitNote(EdorNo、EdorCode、DebitNoteNo、DNTAmount、DebitNoteTitle、PaidAmntへの挿入、 PaidCurr、PayDate、ステータス、VerificationAnt、DebitNoteMode、SubInsurerId、BankAccId、RiskCode、作成者、オペレータ、MAKEDATE、MakeTime、ModifyDate、ModifyTime)
値( 'EN20191225026'、 'RE'、 'DN0000000234'、1000.0、'22' 、1000.0、'01' 、 '2020年1月24日'、 '01'、0.0、'04' 、 'ZCB-003から111まで」、 '888888'、 'X151'、 '001'、 '001'、 '2019年12月25日'、 '夜06時12分41秒'、 '2019年12月25日'、 '夜06時12分41秒' 

エラーログを参照するには、上から、エラーがデータLPDebitNoteテーブルを挿入する際の実装では、主キーの競合を報告し、すでに明らかです。SQL文から見ると、それは確かにケースです。

あなた自身を書き込む前にコードを見に:

実際には、最上部の行がある:LPDebitNoteSchema tLPDebitNoteSchema =新しいLPDebitNoteSchemaは();

 

 今ではtLPDebitNoteSchemaコレクションをmlpdebitnoteseするため、二つの同一のオブジェクトの追加を参照することは困難ではありませんが、オブジェクトが最後のサイクルです。

コードの修正後:

1              SQLwithBindVariables sqlbv = 新しい新しいSQLwithBindVariables();
 2              列TSQL = "PolicyNo SELECT * = LCDebitNoteDetから'PolicyNo ??'" ;
 3              sqlbv = 新しい新しいSQLwithBindVariables();
 4              sqlbv.sql(TSQL)
 。5              sqlbv.put( " PolicyNo」、mLPEdorAppSchema.getPolicyNo());
 6              tLCDebitNoteDetSet = tLCDebitNoteDetDB.executeQuery(sqlbv);
 7              // LCDEBITNOTEDET内部テーブルには、ポリシー番号DEBITNOTENO複数を有することができる
。8              IF!(tLCDebitNoteDetSet = NULL && tLCDebitNoteDetSet.size()> 0 ) {
9                  INTは、 I 1 =; I <= tLCDebitNoteDetSet.size(); I ++ ){
 10                      LPDebitNoteSchema tLPDebitNoteSchema = 新しいLPDebitNoteSchema()。
11                      SQLwithBindVariables sqlbv1 = 新しいSQLwithBindVariables()。
12                      DebitNoteNo = '?DebitNoteNo?' LCDebitNoteから文字列tSql1 =「SELECT * " ;
13                      sqlbv1 = 新しいSQLwithBindVariables()。
14                      sqlbv1.sql(tSql1)。
15                      sqlbv1.put( "DebitNoteNo" 、tLCDebitNoteDetSet.get(I).getDebitNoteNo())。
16                      tLCDebitNoteSet = tLCDebitNoteDB.executeQuery(sqlbv1)
 。17                      IF(!TLCDebitNoteSet = NULL && tLCDebitNoteSet.size()> 0 ){
 18は                          tLCDebitNoteSchema tLCDebitNoteSet.get =(1 。19                          この.mReflections.transFields(tLPDebitNoteSchema、tLCDebitNoteSchema);
 20                          tLPDebitNoteSchema.setEdorNo(mEdorNo);
 21                          tLPDebitNoteSchema.setEdorCode(mLPEdorAppSchema.getEdorCode());
 22                          //    tLPDebitNoteSchema.setSelfPayOffState( "02");変化の様子中に発行された
 23                          //tLPDebitNoteSchema.setVerificationDate(mCurrentDate)。
24                          tLPDebitNoteSchema.setOperator(mG.Operator)。
25                          tLPDebitNoteSchema.setMakeDate(mCurrentDate)。
26                          tLPDebitNoteSchema.setMakeTime(mCurrentTime)。
27                          tLPDebitNoteSchema.setModifyDate(mCurrentDate)。
28                          tLPDebitNoteSchema.setModifyTime(mCurrentTime)。
29                          // mMap.put(tLPDebitNoteSchema、 "DELETE&INSERT"); 
30                      }
 31                      mLPDebitNoteSet.add(tLPDebitNoteSchema)。
32                  }
 33                 mMap.put(mLPDebitNoteSet、 "DELETE&INSERT" );
34              }

これは完璧な実行することができ、そして主キーの競合を報告しません。

おすすめ

転載: www.cnblogs.com/dongyaotou/p/12100487.html
おすすめ