Som jeg allerede har nævnt i dit andet spørgsmål :efter min erfaring virker getClob() og setClob() ikke korrekt.
Brug setCharacterStream()
i stedet:
StringReader clob = new StringReader("");
pStmt = conn.prepareStatement("update activity set REFERENCE = ? WHERE ID = ?");
pStmt.setCharacterStream(1, clob, 0);
pStmt.setLong(2, 1);
pStmt.executeUpdate();
På den måde kan du også fjerne det unødvendige SELECT før opdatering, hvilket også vil forbedre ydeevnen.
En anden mulighed ville være at sætte den kolonne til NULL
Rediger:
Med nyere drivere (11.x) vil du måske også prøve at bruge setString()
og getString()
på CLOB-kolonnen.
Låsningen af rækken bør kun være nødvendig, når du bruger en LOB-lokalisator, som du har til hensigt at beholde under en transaktion, der strækker sig over mere end én erklæring (det er i hvert fald min forståelse af den linkede reference til manualen).