@Override
  protected void doCleanupAfterCompletion(final Object transaction) {
    try {
      super.doCleanupAfterCompletion(transaction);
    } finally {
      JdbcTransactionObjectSupport transactionObj = (JdbcTransactionObjectSupport) transaction;
      EntityManager em = _newTransactionObjects.remove(transactionObj);

      if (em != null) {
        EntityManagerHolder holder =
            (EntityManagerHolder)
                TransactionSynchronizationManager.unbindResource(getEntityManagerFactory());
        LOGGER.debug(
            "doCleanupAfterCompletion() unbound holder [{}] and removed transactionObj [{}]",
            holder,
            transactionObj);
      }
    }
  }