Я сохранил 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;
/
Есть ли что-то, что я здесь упускаю?