我需要从表中检索单行,我感兴趣的是哪种方法更好.一方面getSingleResult是为了检索单个结果而设计的,但它会引发异常.请问这种方法在性能与效益getResultList同
query.setFirstResult(0);
query.setMaxResults(1);
Run Code Online (Sandbox Code Playgroud)
Tom*_*asz 19
Joshua Bloch的Effective Java表示:
对于可以合理预期可以恢复调用者的条件,使用已检查的异常.使用运行时异常来指示编程错误.
感谢来源:为什么你不应该在JPA中使用getSingleResult()
@Entity
@NamedQuery(name = "Country.findByName",
query = "SELECT c FROM Country c WHERE c.name = :name"
public class Country {
@PersistenceContext
transient EntityManager entityManager;
public static Country findByName(String name) {
List<Country> results = entityManager
.createNamedQuery("Country.findByName", Country.class)
.setParameter("name", name).getResultList();
return results.isEmpty() ? null : results.get(0);
}
}
Run Code Online (Sandbox Code Playgroud)
勿绮语*_*勿绮语 10
getSingleResult抛出NonUniqueResultException,如果有多行.它设计用于在真正有单个结果时检索单个结果.
你的方式很好,JPA旨在正确处理这个问题.同时,你无法将它与getSingleResult任何方式进行比较,因为它不起作用.
但是,依赖于您正在处理的代码,最好优化查询以返回单个结果,如果这就是您想要的 - 那么您可以调用getSingleResult.
| 归档时间: |
|
| 查看次数: |
20591 次 |
| 最近记录: |