Como já mencionei em sua outra pergunta :na minha experiência getClob() e setClob() não funcionam corretamente.
Use
setCharacterStream()
em vez de:StringReader clob = new StringReader("");
pStmt = conn.prepareStatement("update activity set REFERENCE = ? WHERE ID = ?");
pStmt.setCharacterStream(1, clob, 0);
pStmt.setLong(2, 1);
pStmt.executeUpdate();
Dessa forma, você também pode remover o SELECT desnecessário antes de atualizar, o que também melhorará o desempenho.
Outra opção seria simplesmente definir essa coluna para
NULL
Editar:
Com drivers mais recentes (11.x), você também pode tentar usar
setString()
e getString()
na coluna CLOB. O bloqueio da linha só deve ser necessário quando você usa um localizador LOB que pretende manter durante uma transação que abrange mais de uma instrução (pelo menos é o meu entendimento da referência vinculada ao manual).