我需要从表中检索单行,我很感兴趣哪种方法更好。
一方面,getSingleResult
用于检索单个结果,但是会引发异常。此方法在与getResultList
相关的性能上是否具有优势
query.setFirstResult(0);
query.setMaxResults(1);
最佳答案
如果有多行,则getSingleResult
引发NonUniqueResultException
。它设计用于在真正存在单个结果时检索单个结果。
您所做的方式很好,并且JPA可以正确处理此问题。同时,您无法以任何方式将其与getSingleResult
进行比较,因为它不起作用。
但是,根据您正在处理的代码,如果要满足所有要求,最好对查询进行细化以返回单个结果,这总会更好-然后,您可以调用getSingleResult
。