Jak już wspomniałem w twoje inne pytanie :z mojego doświadczenia getClob() i setClob() nie działają poprawnie.
Użyj setCharacterStream()
zamiast tego:
StringReader clob = new StringReader("");
pStmt = conn.prepareStatement("update activity set REFERENCE = ? WHERE ID = ?");
pStmt.setCharacterStream(1, clob, 0);
pStmt.setLong(2, 1);
pStmt.executeUpdate();
W ten sposób możesz również usunąć niepotrzebny SELECT przed aktualizacją, co również poprawi wydajność.
Inną opcją byłoby po prostu ustawienie tej kolumny na NULL
Edytuj:
Z nowszymi sterownikami (11.x) możesz również spróbować użyć setString()
i getString()
w kolumnie CLOB.
Blokowanie wiersza powinno być konieczne tylko wtedy, gdy używasz lokalizatora LOB, który zamierzasz zachować podczas transakcji, która obejmuje więcej niż jedną instrukcję (przynajmniej tak rozumiem powiązane odniesienie do podręcznika).