我正在迁移EJB2
应用程序,但我不知道如何处理FinderException
实体bean抛出的EJB2 CMP
,因为在某些业务方法中,FinderException
的catch子句中实现了逻辑代码。
public void myMethod(){
...
try {
File file = fileHome.findFile(inFile);
} catch (FinderException e) {
// Other logic
}
}
现在文件是EJB 3 JPA
实体,不需要将FinderException
放在findFile(...)
方法上
FinderException
是否有替代品,所以我可以保留myMethod的业务逻辑?
我已经处理了一段时间。答案是肯定的,javax.persistence.NoResultException
是您要寻找的。
[在我迁移到ejb3的情况下,每次发生时,我都将FinderException
替换为NoResultException
。只要您try
块中的代码将通过命名查询调用实体管理器,它就不会更改逻辑。 entityManager.createNamedQuery("YourEntity.findById").setParameter(1, id).getSingleResult()
,因为EntityManager::find
不会抛出NoResultException
。
希望有所帮助。