我遇到一个非常奇怪的问题

Java代码:

preparedStatement = conn.prepareStatement(strSql);
resultset = preparedStatement.executeQuery();


在调试时,我试图找到什么是SQL,它是:

SELECT JOBLOG.JOB_EVENT_CODE,JOBLOG.LOG_DATETIME,JOBLOG.MESSAGE_TEXT,B.ITEM_DESC1
FROM JOB_LOG JOBLOG,REF_DATA_ITEM_MASTER B WHERE JOBLOG.BATCH_ID = ?
AND JOBLOG.JOB_EVENT_CODE = B.ITEM_ID AND B.CATEGORY_ID = 105
ORDER BY JOBLOG.JOB_LOG_ID ASC


参数替换为20021854

通过Java代码运行时,上述查询的结果集大小为3

resultset = preparedStatement.executeQuery();


但是,如果我在sqldeveloper中运行相同的查询,我将有5条记录作为输出

SELECT JOBLOG.JOB_EVENT_CODE,JOBLOG.LOG_DATETIME,JOBLOG.MESSAGE_TEXT,B.ITEM_DESC1
FROM JOB_LOG JOBLOG,REF_DATA_ITEM_MASTER B
WHERE JOBLOG.BATCH_ID = 20021854 AND JOBLOG.JOB_EVENT_CODE = B.ITEM_ID AND B.CATEGORY_ID = 105
ORDER BY JOBLOG.JOB_LOG_ID ASC


要添加更多信息,我的ORM是Ibatis。这种不一致的原因可能是什么

最佳答案

我能想到的原因:


您在sql developer中插入了新行,但尚未提交事务,因此只有sql developer可以看到新行,而java程序则看不到(这是常见的情况:))
您连接到2个不同的数据库,请验证
您在PreparedStatment中使用setMaxRows吗?

10-06 15:21