我已经在Oracle12c数据库中存储了一个200mb .txt文件。它被命名为aaa.txt,仅包含“ a”字母。附件表的行DATA包含BLOB。
当我进入SQL-Developer并执行以下语句时
SELECT distinct ID FROM ATTACHMENT WHERE CONTAINS(DATA, '%aa%', 1) > 0;
它返回我的行。但是,当我在Java应用程序中执行prepareStatement
preparedStatement = connection.prepareStatement("select distinct ID from ATTACHMENT WHERE CONTAINS (DATA, \'%aa%\', 1) > 0");
resultSet = preparedStatement.executeQuery();
我没有得到那一行。我尝试了休眠的nativeQueries和jdbc prepareStatements。
我还尝试禁用隐式和显式缓存
connection.setImplicitCachingEnabled(false);
connection.setStmtCacheSize(0);
connection.setExplicitCachingEnabled(false);
preparedStatement.setDisableStmtCaching(true);
所有新文件都会出现问题,preparedStatement确实会找到旧文件。
我还尝试过重新分析表格并同步索引
ANALYZE TABLE ATTACHMENT COMPUTE STATISTICS
BEGIN
CTX_DDL.SYNC_INDEX('IDX_ATTACHMENT');
END;
/
这里有什么我想念的吗?