2017-04-04 2 views
0

meine jdev Version: 11.1.1.7Lock-Ausnahme während einer Tabelle asynchron in oracle adf Aktualisierung

In unserer adf Anwendung haben wir eine Anforderung schweren csv-Dateien (10k-100k Zeilen) und Verfahren zum Hochladen/validieren jeweils Zeilen und Aktualisierung in der Tabelle mit Prozess-/Validierungsstatus. Das Update findet für jede Zeile statt, indem die Ansichtskriterien mit einem Primärschlüssel als Bindevariable angewendet werden und jede aktualisierte Zeile committed wird. Der gesamte obige Prozess findet gleichzeitig unter Verwendung der java.util.concurrent-Dienstprogramme statt.

Alles funktioniert gut, aber einige Zeilen treffen auf oracle.jbo.JboException: JBO-25014: Ein anderer Benutzer hat die Zeile mit dem Primärschlüssel oracle.jbo.Key [254] geändert.

Ich habe versucht, die Tabelle am Ende des gesamten Executor-Prozesses zu aktualisieren und alle aktualisierten Zeilen im Stapel zu übergeben, was gut funktioniert, aber dies widerspricht einer der Anforderungen als Benutzer muss bis zum Ende des Prozesses warten, um die Anzahl zu sehen aktualisierte Datensätze in der Benutzeroberfläche.

Meine Abfragen: 1.Wie kann ich einen Thread-sicheren DB-Commit-Vorgang in ADF in einem solchen Szenario implementieren? 2.Each verarbeitet/validiert Zeile sollte DB verpflichtet werden, damit die aktualisierten Datensätze können

Antwort

0

durch Benutzer auf UI angezeigt werden Ihre nach jedem Festschreibungsoperation Gebrauch „executeQuery()“ oder „closerowset()“ für Ihre getviewobject.

zB: public void closemaster() { this.getMasterView().closeRowSet(); }

oder Sie verwenden können:

public void closemaster() { 
    this.getMasterView().executeQuery(); 
} 

beide Antworten arbeiten.

Ich denke, Ihr Problem wird gelöst werden.

aktualisieren, was passiert.

+0

Ich habe dies in der impl-Klasse verwendet, die Sie Methoden binden können und durch Operation Bindung in Backing-Bean zugreifen können. – keval

Verwandte Themen