Я использую executeBatch для вставки данных, но некоторые данные потеряны, не могут быть найдены в базе данных, не найдено никаких исключений.
DB: Oracle.
Версия для драйверов: 11.2.0.4.0
Пул: UCP: Oracle Universal Connection Pool
Помощь Pls.Утерянные данные при использовании addBatch java
Вот мой код:
protected static void insertExtraData(String serviceCode, JsonObject extras, PaymentRequest request) {
PreparedStatement ps = null;
long tid = request.getTransId();
long coreId = request.getCoreTransId();
Connection con = null;
try {
con = ConnectionFactory.getConnection();
con.setAutoCommit(false);
ps = con.prepareStatement("INSERT INTO REPORT_ADMIN.SHOPPING_TRANS_DATA VALUES(?,?,?)");
MultiLog.write(serviceCode, tid, coreId, "INSERT INTO REPORT_ADMIN.SHOPPING_TRANS_DATA VALUES(?,?,?)");
Set<String> fieldNames = extras.getFieldNames();
for (String fieldName : fieldNames) {
MultiLog.write(serviceCode, tid, coreId, "para 01: " + tid);
MultiLog.write(serviceCode, tid, coreId, "para 02: " + fieldName);
MultiLog.write(serviceCode, tid, coreId, "para 03: " + extras.getString(fieldName));
ps.setString(1, String.valueOf(tid));
ps.setString(2, Utils.nullToEmpty(fieldName));
ps.setString(3, Utils.nullToEmpty(extras.getString(fieldName)));
MultiLog.write(serviceCode, tid, coreId, "add Batch");
ps.addBatch();
}
ps.executeBatch();
con.commit();
}
catch (Exception e) {
MultiLog.error(serviceCode, tid, "ERROR", e);
}
finally {
Utils.close(ps);
Utils.close(con);
}
}
Вот мой журнал:
[[1460430555111][698905167]]---INSERT INTO REPORT_ADMIN.SHOPPING_TRANS_DATA VALUES(?,?,?) [[1460430555111][698905167]]---para 01: 1460430555111 [[1460430555111][698905167]]---para 02: TransId_Ref [[1460430555111][698905167]]---para 03: 1460430539304 [[1460430555111][698905167]]---add Batch [[1460430555111][698905167]]---para 01: 1460430555111 [[1460430555111][698905167]]---para 02: ContractNo [[1460430555111][698905167]]---para 03: 207-0003 [[1460430555111][698905167]]---add Batch [[1460430555111][698905167]]---para 01: 1460430555111 [[1460430555111][698905167]]---para 02: IdCardNumber [[1460430555111][698905167]]---para 03: ***9272 [[1460430555111][698905167]]---add Batch [[1460430555111][698905167]]---para 01: 1460430555111 [[1460430555111][698905167]]---para 02: CustomerName [[1460430555111][698905167]]---para 03: pa [[1460430555111][698905167]]---add Batch [[1460430555111][698905167]]---para 01: 1460430555111 [[1460430555111][698905167]]---para 02: CompanyName [[1460430555111][698905167]]---para 03: FC [[1460430555111][698905167]]---add Batch [[1460430555111][698905167]]---para 01: 1460430555111 [[1460430555111][698905167]]---para 02: RefNo [[1460430555111][698905167]]---para 03: MS1460430555111 [[1460430555111][698905167]]---add Batch [[1460430555111][698905167]]---para 01: 1460430555111 [[1460430555111][698905167]]---para 02: IdentifyInfo [[1460430555111][698905167]]---para 03: TE_at [[1460430555111][698905167]]---add Batch
Описание таблицы:
CREATE TABLE "REPORT_ADMIN"."SHOPPING_TRANS_DATA" ( "TID" NUMBER NOT NULL ENABLE, "KEY" VARCHAR2(50 BYTE), "VALUE" VARCHAR2(500 BYTE), ) SEGMENT CREATION IMMEDIATE PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
так что ваш многоязычный список содержит все записи для записей? – eis
Multilog - это только log4j с некоторым улучшением, –
Это не то, что я спросил. Включает ли журнал все ваши партийные записи? – eis