#jpa #ejb #entity #cmp
#jpa #ejb #объект #cmp
Вопрос:
Я переношу EJB2
приложение, и я не знаю, как справиться с FinderException
брошенными EJB2 CMP
компонентами объекта, потому что в некоторых бизнес-методах был логический код, реализованный в предложении catch of FinderException
.
public void myMethod(){
...
try {
File file = fileHome.findFile(inFile);
} catch (FinderException e) {
// Other logic
}
}
Теперь File является EJB 3 JPA
объектом, и нет необходимости использовать метод FinderException
on findFile(...)
Есть ли какая-либо замена FinderException
, чтобы я мог сохранить бизнес-логику myMethod?
Ответ №1:
Я уже некоторое время занимаюсь этим. Ответ да, javax.persistence.NoResultException
это то, что вы ищете.
В случае моей миграции на ejb3 я FinderException
заменил NoResultException
на при каждом возникновении. Это не меняет логику, если ваш код в try
блоке будет вызывать диспетчер объектов через именованные запросы, например. entityManager.createNamedQuery("YourEntity.findById").setParameter(1, id).getSingleResult()
поскольку EntityManager::find
не будет выбрасываться NoResultException
.
Надеюсь, это поможет.