具体异常信息:
[http-bio-8080-exec-9] INFO UserService - 根据用户账号获取用户信息失败!
org.springframework.dao.EmptyResultDataAccessException: Incorrect result size: expected 1, actual 0
at org.springframework.dao.support.DataAccessUtils.requiredSingleResult(DataAccessUtils.java:71)
at org.springframework.jdbc.core.JdbcTemplate.queryForObject(JdbcTemplate.java:795)
at org.springframework.jdbc.core.JdbcTemplate.queryForObject(JdbcTemplate.java:813)
at cn.honest.study.dao.impl.UserDaoImpl.findUserByAccount(UserDaoImpl.java:53)
at cn.honest.study.service.UserService.getUserByAccount(UserService.java:57)
at cn.honest.study.controller.UserController.RegisterUser(UserController.java:48)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
......
问题描述:
Spring中使用JdbcTemplate的queryForObject方法,当查不到数据时会抛出如下异常:
在Debug模式的调试下可以看出:
当返回结果为空时,就会抛出EmptyResultDataAccessException异常,Spring这样做的目的是为了防止程序员不对空值进行判断,保证了程序的健壮性。另外,当results的size大于1时,还会
[http-bio-8080-exec-9] INFO UserService - 根据用户账号获取用户信息失败!
org.springframework.dao.EmptyResultDataAccessException: Incorrect result size: expected 1, actual 0
at org.springframework.dao.support.DataAccessUtils.requiredSingleResult(DataAccessUtils.java:71)
at org.springframework.jdbc.core.JdbcTemplate.queryForObject(JdbcTemplate.java:795)
at org.springframework.jdbc.core.JdbcTemplate.queryForObject(JdbcTemplate.java:813)
at cn.honest.study.dao.impl.UserDaoImpl.findUserByAccount(UserDaoImpl.java:53)
at cn.honest.study.service.UserService.getUserByAccount(UserService.java:57)
at cn.honest.study.controller.UserController.RegisterUser(UserController.java:48)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
......
问题描述:
Spring中使用JdbcTemplate的queryForObject方法,当查不到数据时会抛出如下异常:
在Debug模式的调试下可以看出:
当返回结果为空时,就会抛出EmptyResultDataAccessException异常,Spring这样做的目的是为了防止程序员不对空值进行判断,保证了程序的健壮性。另外,当results的size大于1时,还会
当results的size大于1时,还会抛出IncorrectResultSizeDataAccessException异常,以保证返回的记录只有一条。 如果我们想查询结果为空时,返回null而不是抛出异常,该怎么办呢? 问题解决:很简单,只需要在捕获EmptyResultDataAccessException,然后返回null,代码如下:Object object = null; try { object = jdbcTemplate.queryForObject(); } catch (EmptyResultDataAccessException e) { return null; } return object;
参考文章:http://blog.csdn.net/u011983531/article/details/48858261