Как я уже упоминал в ваш другой вопрос : по моему опыту getClob () и setClob () не работают должным образом.
Используйте setCharacterStream()
вместо:
StringReader clob = new StringReader("");
pStmt = conn.prepareStatement("update activity set REFERENCE = ? WHERE ID = ?");
pStmt.setCharacterStream(1, clob, 0);
pStmt.setLong(2, 1);
pStmt.executeUpdate();
Таким образом, вы также можете удалить ненужный SELECT перед обновлением, что также улучшит производительность.
Другой вариант - установить для этого столбца значение NULL
.
Edit:
С более новыми драйверами (11.x) вы также можете попробовать использовать setString()
и getString()
в столбце CLOB.
Блокировка строки должна быть необходима, только если вы используете локатор больших объектов, который намереваетесь сохранить во время транзакции, охватывающей более одного оператора (по крайней мере, это мое понимание связанной ссылки на руководство).