Found the issue. Changed em.isJoinedToTransaction() to em.getTransaction().isActive() and now it is working fine.
if(em.getTransaction().isActive()){ em.getTransaction().commit(); }