gpt4 book ai didi

java - Spring JDBC - .queryForObject() 返回太多结果?

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:15:14 26 4
gpt4 key购买 nike

我有这个 SQL 语句:

return jdbcTemplate.queryForObject("SELECT * FROM materials WHERE title = ?", new MaterialMapper(), title);

而且由于我使用的是 .queryForObject,所以我希望得到一个结果或没有结果。相反,我得到了 1 个以上的结果,这会引发 IncorrectResultSizeDataAccessException

最佳答案

方法queryForObject(sql, rowMapper, args) (以及所有重载)明确声明抛出一个 IncorrectResultSizeDataAccessException如果查询返回超过 1 行,或者不返回任何内容:

Throws: IncorrectResultSizeDataAccessException - if the query does not return exactly one row

在您的情况下,由于查询 SELECT * FROM materials WHERE title = ? 可以返回多于 1 行,您有两个选择:

  • 要么使用 query(sql, rowMapper, args)方法,它返回元素的 List 而不仅仅是一行。然后,您可以使用它仅检索第一个元素(如果列表不为空)。
  • 调整您的查询,使其通过限制结果返回单行。

关于java - Spring JDBC - .queryForObject() 返回太多结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36816672/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com