次のコードがあります。
try (DB db = new DB()) {
db.open(cpds);
// Using the metadata to walk down the tree and identify all
// children nodes to the leaf tables.
// First the metadata for the pk of the target table
List<Integer> recordIdList = new ArrayList<Integer>();
recordIdList.add(recordId);
batchInsertDeletePks(recordIdList, db);
List<Integer> pkValues = new ArrayList<Integer>();
pkValues.add(recordId);
prepareChildDeletes(tablemeta_id, pkValues, recordId, db);
ColumnData.delete("RECORD_ID IN (SELECT ID FROM TEMPDELETE)");
noDeleted = RecordData.delete("ID IN (SELECT ID FROM TEMPDELETE)");
TempDelete.deleteAll();
} catch (Exception ex) {
logger.debug(ex.getMessage());
}
TEMPDELETE には、COLUMNDATA から削除する必要がある主キーがすべて含まれています。ColumnData.delete が機能していない、RecordData.delete が機能していない、TempDelete.deleteAll が機能していない。例外はありません。データベースは h2-1.4.196 です
それらにトレースをデバッグし、作成された SQL をカット アンド ペーストし、SQL インタープリターでその SQL を実行すると、すべてのクエリが正常に機能します。
例と異なる私のアプローチの何がわかりませんか? 何か案は?