Google und die Oracle Support und Community Seiten sind voll von Hinweisen zu ORA-02014 (cannot select FOR UPDATE from view with DISTINCT, GROUP BY, etc.), aber es waren viele Holzwege dabei, als es galt, die Ursache für den Fehler zu finden. Da es vermutlich kein Einzelfall ist, möchten wir die gefundenen Informationen hier zusammentragen:

Ausgangslage
In der Datenbank wird ein Join über mehrere Tabellen incl. Instead-of-Trigger angelegt. Auf diesen View wird in ADF ein Entity-Object erstellt. Beim Versuch mit dem Model-Tester Daten zu ändern erscheint der Fehler ORA-02014.
Die View kann in der Datenbank definitiv mit DML-Statements genutzt werden und enthält auch keine DISTINCT, GROUP BY, UNION, etc.

Ursache
Auch die analytischen Funktionen RANK, LAG, LEAD, ROWNUM, etc. verhindern, dass auf dem View das Statement SELECT for UPDATE abgesetzt werden kann.
Der Instead-of Trigger ist nicht in der Lage auf das Select .. for update zu reagieren. ADF setzt beim ersten Schreiben eines Wertes in ein Attribut des Entity-Objects ein Select for update ab.

Lösung
Die billige Lösung ist natürlich, das Rank in diesem Fall durch eine andere Alternative in dem View abzulösen. Auf der anderen Seite besteht die Möglichkeit, das Lock-Verhalten von ADF zu ändern. Dazu bietet ADF die Möglichkeit, am Entity-Object die EntityImpl zu erweitern:

Wird hier die super.lock() Methode überschrieben und im Gegenzug eine Package-Funktion in der Datenbank aufgerufen, die ein select for update über einen Primärschlüssel durchführt, kann auch der View mit analytischen Funktionen in ADF für DML-Statements genutzt werden.