EntityManager com Criteria

Pessoal, estou precisando de ajuda em questão de se utilizar o criteria com entityManager com trasações controladas pelo container,

vi alguns posts aqui no forum, porém as soluções propostas não funcionaram,

segue a situação,

preciso que as transacões sejam controladas pelo container, porém, gostaria de saber se é possível usar o criteria pegando a session, desta maneira:
session = (Session) entityManager.getDelegate();

pois recebo uma exception de nullpointer ao executar meu método getUniqueResult, creio que pode algum problema na injeção

@Stateful
@TransactionManagement(TransactionManagementType.CONTAINER)
@TransactionAttribute(TransactionAttributeType.REQUIRED)
public class PersistenceInterface implements PersistenceInterfaceLocal, Serializable {

    public static final Logger log = Logger.getLogger(PersistenceInterface.class);
   
   @PersistenceContext(unitName = "persistenceUnit")
    private EntityManager entityManager;
     
    Session session;
   
  public PersistenceInterface() {
        super();
        try {
            session = (Session) entityManager.getDelegate();
        } catch (Exception e) {
            e.printStackTrace();
        }

    }

    @Override
    public void merge(AbstractEntity entity) {

        try {
            entityManager.merge(entity);

        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    @Override
    public void persist(AbstractEntity entity) {
        try {
            entityManager.persist(entity);
        } catch (HibernateException e) {
            e.printStackTrace();
        }

@Override
    public Object getUniqueResult(Class classe, Long id) {
         try {
            Criteria criteria = session.createCriteria(classe);
            criteria.add(Restrictions.eq("ativo", true));
            criteria.add(Restrictions.eq("id", id));
            criteria.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);
            return criteria.uniqueResult();
        } catch (NonUniqueResultException e) {
            e.printStackTrace();
        } catch (HibernateException e) {
            e.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

    @Override
    public Criteria getCriteria(Class classe) {
        return session.createCriteria(classe);
    }

    @Override
    public Criteria createCriteria(Class classe) {
        return getCriteria(classe);
    }



}