Как справиться с FinderException при переносе компонентов объекта EJB 2 CMP в объект EJB 3 JPA?

#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 .

Надеюсь, это поможет.