No entity found for query

EJB: 很久以前一直用EntityManager下getResultList()查询数据,即便一个数据亦是如此,所以要频繁的List.get(0),生活就在这样的反反复复中变得让人“怎渡”;后来,getSingleResult()出现了,然后,过了几秒钟,它被宠幸了…

尽管如此,用它时还是要小心,因为你的代码的“可能异常”里从此就多了一个“No entity found for query”,如果你不记得你曾用过.getSingleResult()这么个东东,你可能就一辈子不记得了,你为了这样一个东东发呆、发闷、发火,只因为你曾毫无顾忌的宠幸它…

在getSingleResult的源码里有这样一句: @throws EntityNotFoundException if there is no result

也就是说,查不到结果时,它是抛异常的,不会返回null..。

既然如此,一个解决办法就是把调用getSingleResult()的语句放在try块中,如果数据库中没有与jpql语句匹配的记录的话就在catch块中处理,否则就在try块中处理。

jsf页面的自动刷新,只需要在actin后面添加immediate="true"就ok了。

你可能感兴趣的:(No entity found for query)