之前没有用过JPA,现在的项目开始用JPA了,总得有个学习的过程是吧,什么命名查询等,都得一步一步来,
本来需要彻底的学习一下,还买本书,不过到现在还没有看过,
今天写程序,遇到一个问题,
不吐不快,
里面有道了下面一段代码
写道
Long oriInfoId = null;
sql = "SELECT info_id FROM im_oriinfo_info WHERE issue_infoid =? ";
Query query = this.emr.createNativeQuery(sql).setParameter(1, infoId);
Object obj =query.getSingleResult();
if(null!=obj){
oriInfoId = Long.parseLong(obj.toString());
}
return oriInfoId;
sql = "SELECT info_id FROM im_oriinfo_info WHERE issue_infoid =? ";
Query query = this.emr.createNativeQuery(sql).setParameter(1, infoId);
Object obj =query.getSingleResult();
if(null!=obj){
oriInfoId = Long.parseLong(obj.toString());
}
return oriInfoId;
大家看下 ,我自认为没什么问题,逻辑处理的还可以,
Object obj =query.getSingleResult();
这一行的时候报错了
javax.persistence.NoResultException: No entity found for query
我就郁闷了,API设置成这样
你说没有查询到实体,要是我设计的话,当然没有查询到的话,我返回空,这个没有疑问吧,
你不返回空,也就算了,给一个异常什么的,也可以,
异常是给了, 是尼玛运行时异常,写代码的时候IDE一定不会提示你try catch
还要我自己手工写,但是我不能每次查询的时候都写try catch吧
这样代码看这也不爽,你要是可能抛出异常给个throwable异常也可以啊,非要到出问题了你才提示,
这不是找问题吗
给人建议
1.如果没有结果返回,可返回null,
2.其次如果不要返回null的话,可以考虑必须捕获的异常提醒方式,这样的话,IDE一般都会提示try catch,虽然难看点但是不失为一个好的提示方法,