提问人:Aditya Taunk 提问时间:10/25/2023 更新时间:10/25/2023 访问量:13
JdbcTemplate 为 RowCallbackHandler 提供空的 ResultSet,但为 ResultSetExtractor 提供非空的 ResultSet
JdbcTemplate provides empty ResultSet for RowCallbackHandler but a non-empty one for ResultSetExtractor
问:
我正在尝试将一些数据从 MS SQL Server 数据库传输到 Postgres 数据库。我的计划是编写一个Spring Boot应用程序,该应用程序从一个数据源(mssql)读取记录并将它们插入到另一个数据源(postgres)中。在进入杂草之前,我想检查我的应用程序是否可以访问这两个数据库。这是我到目前为止所拥有的:
@Service
public class ScenarioTransferService
{
@Autowired private JdbcTemplate srcTemplate;
@Autowired private JdbcTemplate dstTemplate;
public void handle()
{
srcTemplate.query("select plant from plant", rs ->
{
while (rs.next())
{
System.out.println("source plant: " + rs.getString(1));
}
});
dstTemplate.query("select plant from plant", new ResultSetExtractor<Void>()
{
@Override
public Void extractData(ResultSet rs) throws SQLException, DataAccessException
{
while (rs.next())
{
System.out.println("destination plant: " + rs.getString(1));
}
return null;
}
});
dstTemplate.query("select plant from plant", new RowCallbackHandler()
{
@Override
public void processRow(ResultSet rs) throws SQLException
{
while (rs.next())
{
System.out.println("destination plant: " + rs.getString(1));
}
}
});
}
}
请注意,我同时使用 ResultSetExtractor 和 RowCallbackHandler 查询 dstTemplate。其中每个都应该让我访问相同的基础 ResultSet,但是当我运行它时,我只从 ResultSetExtractor 获得输出,因为 RowCallbackHandler 给了我一个空的 ResultSet。
还值得注意的是,连接到 MS SQL Server 数据库的 srcTemplate 也使用 RowCallbackHandler,但作为 lambda,工作正常。只是 postgres RowCallbackHandler 不起作用,无论我是使用 lambda 还是直接调用它。有什么线索吗?
如果这是数据库连接问题,或者如果 postgres 数据库中确实没有数据,我希望 ResultSetExtractor 会给我相同的结果。
答: 暂无答案
评论