`

突遭 JPA的设计 欢迎补充

阅读更多

之前没有用过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;

 

 大家看下 ,我自认为没什么问题,逻辑处理的还可以,

 

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,虽然难看点但是不失为一个好的提示方法,

 

分享到:
评论
2 楼 q821424508 2012-11-27  
java_bigniu 写道
在下面catch (Exception e) 后还在那一行报错  

没太明白你的意思。
不过我的意思是说,如果有异常,那么我捕获就可以了,接着我就可以处理了,你补给我异常,但是又不能保证数据库的数据就是存在的,这样运行时一定会有查询不到数据的情况,
如果项目部署了,那么一定会有运行出错的情况,那个时候你会很纠结,
1 楼 java_bigniu 2012-11-27  
在下面catch (Exception e) 后还在那一行报错  

相关推荐

Global site tag (gtag.js) - Google Analytics