我有这个SQL语句:
float (li[:(round(li)*0.3)])
由于我正在使用.queryForObject,我希望得到一个或没有结果。相反,我得到的结果超过1,这会抛出IncorrectResultSizeDataAccessException异常。有什么想法吗?
答案 0 :(得分:2)
方法queryForObject(sql, rowMapper, args)
(和所有重载)明确声明如果查询返回多于1行,则抛出IncorrectResultSizeDataAccessException
,或者不返回任何内容:
抛出:
IncorrectResultSizeDataAccessException
- 如果查询没有返回一行
在您的情况下,由于查询SELECT * FROM materials WHERE title = ?
可以返回超过1行,因此您有两种选择:
query(sql, rowMapper, args)
方法代替,它返回List
个元素而不只是一行。然后,您可以使用它仅检索第一个元素(如果列表不为空)。答案 1 :(得分:0)
如果查询仅返回一行,则还可以使用WHERE ROWNUM = 1
子句。
这将使您免于例外-但您需要谨慎: