是不是javax.persistence.NoResultException违反了Java中异常使用的基本原则?
不应使用例外来控制程序的正常流程.从数据库查询返回零结果似乎是非常标准(非常例)的情况.无论如何都将通过调用代码来处理.
mab*_*abi 22
请注意,NoResultException的javadoc指出:
在查询上执行Query.getSingleResult()或TypedQuery.getSingleResult()并且没有返回结果时由持久性提供程序抛出.
利用getSingleResult()你说明你知道那里将是正好一个结果.不多(见NonUniqueResultException),而不是更少.因此,我认为缺少结果确实是一种特殊情况.
如果您不确定将返回的数据量,请使用getResultList().
但是,对于JPA API的这一部分,您并不孤单.这篇文章指出唯一真正有效的用途getSingleResult()是返回一个标量值,指出这NoResultException是一个未经检查的异常并引用了Bloch的Effective Java,第40项:
对可恢复条件使用已检查的异常,对编程错误使用运行时异常.
不幸的是,JPA 2.0规范(或任何其他规范)并没有解释这种选择背后的原因.
| 归档时间: |
|
| 查看次数: |
6859 次 |
| 最近记录: |