我遇到一个非常奇怪的问题
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吗?