public Wcrash getWcrashInfo(int id) {
String sql = "select plateform_id,android_version,app_version_code,app_version_name,device_id,"
+ "model,brand,product,stack_trace,crash_date,package_name from wcrash where id = ? ";
return this.jdbcTemplate.queryForObject(
sql,
new Object[]{id},
new RowMapper<Wcrash>(){
@Override
public Wcrash mapRow(ResultSet rs, int i) throws SQLException {
Wcrash wcrash = new Wcrash();
wcrash.setPlateformId(toNullStr(rs.getString("plateform_id")));
wcrash.setAndroidVersion(toNullStr(rs.getString("android_version")));
wcrash.setAppVersionCode(toNullStr(rs.getString("app_version_code")));
wcrash.setAppVersionName(toNullStr(rs.getString("app_version_name")));
wcrash.setDeviceId(toNullStr(rs.getString("device_id")));
wcrash.setModel(toNullStr(rs.getString("model")));
wcrash.setBrand(toNullStr(rs.getString("brand")));
wcrash.setProduct(toNullStr(rs.getString("product")));
wcrash.setStackTrace(toNullStr(rs.getString("stack_trace")));
wcrash.setCrashDate(toNullStr(rs.getString("crash_date")));
wcrash.setPackageName(toNullStr(rs.getString("package_name")));
return wcrash;
}
});
}

异常信息:

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:729)

queryForObject无记录时会抛出异常,而对于query()list的类型不会抛出此异常。解决方法就是捕获这个异常然后在catch中返回null就可以。修改代码如下:

public Wcrash getWcrashInfo(int id) {
String sql = "select plateform_id,android_version,app_version_code,app_version_name,device_id,"
+ "model,brand,product,stack_trace,crash_date,package_name from wcrash where id = ? ";
try{
return this.jdbcTemplate.queryForObject(
sql,
new Object[]{id},
new RowMapper<Wcrash>(){
@Override
public Wcrash mapRow(ResultSet rs, int i) throws SQLException {
Wcrash wcrash = new Wcrash();
wcrash.setPlateformId(toNullStr(rs.getString("plateform_id")));
wcrash.setAndroidVersion(toNullStr(rs.getString("android_version")));
wcrash.setAppVersionCode(toNullStr(rs.getString("app_version_code")));
wcrash.setAppVersionName(toNullStr(rs.getString("app_version_name")));
wcrash.setDeviceId(toNullStr(rs.getString("device_id")));
wcrash.setModel(toNullStr(rs.getString("model")));
wcrash.setBrand(toNullStr(rs.getString("brand")));
wcrash.setProduct(toNullStr(rs.getString("product")));
wcrash.setStackTrace(toNullStr(rs.getString("stack_trace")));
wcrash.setCrashDate(toNullStr(rs.getString("crash_date")));
wcrash.setPackageName(toNullStr(rs.getString("package_name")));
return wcrash;
}
});
}catch(EmptyResultDataAccessException e){
return null;
}
}

org.springframework.dao.EmptyResultDataAccessException的更多相关文章

  1. (后端)org.springframework.dao.EmptyResultDataAccessException: Incorrect result size: expected 1,actual 0

    两种方案: 用queryForList方法替换queryForObject或者queryForMap,因为这两个方法必须要有值,不能为空. 把这个异常捕获,用try/catch. 这个查询的结果是nu ...

  2. 【异常】Caused by: java.lang.ClassNotFoundException: org.springframework.dao.DataIntegrityViolationException

    Caused by: java.lang.ClassNotFoundException: org.springframework.dao.DataIntegrityViolationException ...

  3. org.springframework.dao.DataIntegrityViolationException:

    数据库用的hibernate,开发工具用的myeclipse,使用开发工具连接数据库生成hibernate基于xml的po类,运行时报org.springframework.dao.DataInteg ...

  4. javaEE-----org.springframework.dao.InvalidDataAccessApiUsageException: Write operation

    org.springframework.dao.InvalidDataAccessApiUsageException: Write operations are not allowed in read ...

  5. org.springframework.dao.InvalidDataAccessApiUsageException: Parameter value [41] did not match expected type [java.lang.Integer (n/a)];

    题记:以前记录过一些自己遇到的BUG,这个行为,让我一看报错的提示信息就能定位到问题的所在,后来记得比较多了,好多是重复性的再加上比较忙就没有详细的记录了,今天的工作量比较小,就顺便记录一下,以便以后 ...

  6. org.springframework.dao.InvalidDataAccessApiUsageException:The given object has a null identifi的解决方案

    异常信息: org.springframework.dao.InvalidDataAccessApiUsageException: The given object has a null identi ...

  7. org.springframework.dao.InvalidDataAccessApiUsageException: Write operations are not allowed in read-only mode

    [spring]:org.springframework.dao.InvalidDataAccessApiUsageException: Write operations are not allowe ...

  8. OpenSessionInViewFilter与org.springframework.dao.InvalidDataAccessApiUsageException

    报错:org.springframework.dao.InvalidDataAccessApiUsageException: Write operations are not allowed in r ...

  9. org.springframework.dao.InvalidDataAccessApiUsageException: detached entity passed to persist: sys.entity.Role; nested exception is org.hibernate.PersistentObjectException: 的解决方案

    1.错误信息 org.springframework.dao.InvalidDataAccessApiUsageException: detached entity passed to persist ...

随机推荐

  1. Win8.1专业版、核心板和企业版有什么区别

    Win8.1核心版(一般就称之为Windows 8.1) + Win8.1 专业版(称之为Windows 8.1 Pro),根据用户输入的序列号(就是Win8密钥)来区分安装.Win8.1企业版(称之 ...

  2. 单线多拨,傻瓜式openwrt单线多拨叠加速率教程

    http://bbs.pceva.com.cn/thread-98362-1-1.html

  3. 关于Microsoft app下同义词的整理

    Windows os 以下词表达的是同一个概念 windows store app windows metro app windows modern app windows runtime app w ...

  4. 第04讲- Android项目目录结构分析

    学习内容: 1.        认识R类(R.java)的作用 R.java是在建立项目时自动生成的,这个文件是只读模式,不能更改.R类中包含很多静态类,且静态类的名字都与res中的一个名字对应,即R ...

  5. Linux网络编程--多播

    一.多播介绍 什么是多播? 单播用于两个主机之间的端对端通信,广播用于一个主机对整个局域网上所有主机上的数据通信.单播和广播是两个极端,要么对一个主机进行通信,要么对整个局域网上的主机进行通信.实际情 ...

  6. poj 3579 Median (二分搜索之查找第k大的值)

    Description Given N numbers, X1, X2, ... , XN, let us calculate the difference of every pair of numb ...

  7. php 对象的一些特性

    class person { private $name; private $age = 2; public function __construct($name,$age) { $this-> ...

  8. c++之 常量

    const常量 当在类型名前面加上关键字const后,表示它是一个只读的量,不能对其进行修改,因而被称为常量. 下面的例子对常量进行修改: const常量是只读的,可以读取它的值,或者用printf打 ...

  9. [Ionic] Build and Run an Ionic App from Scratch

    Install: npm install ionic cordova -g Create a project with blank template: ionic start <project_ ...

  10. 使用批处理bat作为日期系统日期的前三天

    在管理server它经常是依据一天来推断载日期系统日志文件,例如,上周五,周一的需要上传日志.上传日志的日期前一天,日志文件命名的日期.这需要获得的日期的前三天.或之前n当天日期. 批量绑定vbs可以 ...