Oracle Blob search возвращает устаревшие данные - PullRequest
0 голосов
/ 11 октября 2018

Я сохранил 200-мегабайтный текстовый файл в моей базе данных Oracle12c.Он называется aaa.txt и содержит только буквы "a".В таблице вложений есть строка DATA, которая содержит BLOB.

Когда я вхожу в SQL-Developer и выполняю следующую инструкцию

SELECT distinct ID FROM ATTACHMENT WHERE CONTAINS(DATA, '%aa%', 1) > 0;

, она возвращает мою строку.Однако, когда я выполняю подготовленное состояние в моем приложении Java

preparedStatement = connection.prepareStatement("select distinct ID from ATTACHMENT WHERE CONTAINS (DATA, \'%aa%\', 1) > 0");
resultSet = preparedStatement.executeQuery();

, я не получаю эту строку.Я пробовал hibernate nativeQueries и jdbc prepareStatements.

Я также пытался отключить неявное и явное кэширование

connection.setImplicitCachingEnabled(false);
connection.setStmtCacheSize(0);
connection.setExplicitCachingEnabled(false);
preparedStatement.setDisableStmtCaching(true);

Проблема возникает со всеми новыми файлами, подготовленное состояние действительно находит старые файлы.

Я также попытался повторно проанализировать таблицу и синхронизировать индекс

ANALYZE TABLE ATTACHMENT COMPUTE STATISTICS

BEGIN
    CTX_DDL.SYNC_INDEX('IDX_ATTACHMENT');
END;
/

Есть ли что-то, что я здесь упускаю?

...