Polimorfismo de herança e EJB JPA

Eu tenho um aplicativo da web Java EE 6 usando transações gerenciadas por contêiner e Contexto de Persistência propagada por contêiner através de

@PersistenceContext
private EntityManager em;

Na camada JPA eu tenho uma estratégia de herança, ondeMyExtendedClassA eMyEntendedClassB ambos estendemabstract MyClass.

eu usostateless facade classes de serviço para implementar o acesso aos dados através dos métodosfind, findAll, merge, persist, remove:

@Stateless
public class MyExtendedClassAFacade {
    @PersistenceContext
    private EntityManager em;
    public void persist(MyExtendedClassA a) {
        // ...
    }
    // other methods
}

Por enquanto, tudo bem. Agora eu tenho que implementar um polimorfismo nocomportamento das classes estendidas. Esse comportamento consiste em gerenciar algumas outras entidades no banco de dados, portanto, precisa do PersistenceContext (e, portanto, eu preciso usar outrosStateless EJBs):

@Stateful
public class MyBean {

    @EJB
    private MyClassFacade myClassFacade;   // stateless facade service class

    public void doSomething() {
        for (MyClass c : myClassFacade.findAll()) {
            // here I need to perform operations on the db. 
            // The implementation differs on each extended class.
            // I want to avoid a brute-force coding like:
            if (c.getClass().equals(MyExtendedClassA.class)) {
                @EJB MyExtendedClassAFacade myClassFacadeA;
                myClassFacadeA.doSomething((MyExtendedClassA) c);
            } else if (c.getClass().equals(MyExtendedClassB.class))
                @EJB MyExtendedClassBFacade myClassFacadeB;
                myClassFacadeB.doSomething((MyExtendedClassB) c);
            }
            // Instead, I would like to write something like:
            @EJB AnotherStatelessBean asb;
            asb.doSomething(c);
        }
    }
}

Existe algum padrão de abstração que eu possa usar para esse objetivo?

questionAnswers(1)

yourAnswerToTheQuestion