@TransactionalEventListener causing error "No transaction is currently active"

Should I be placing @Transactional before @TransactionalEventListener annotations ?
The following code only works when I place @Transactional before the @TransactionalEventListener :

    @Transactional
    @TransactionalEventListener
    public void onUserMessageChangedAfterCommit(EntityChangedEvent<UserMessage> event) {
        try {
            if (event.getType() == EntityChangedEvent.Type.CREATED) {
                UserMessage userMessage = dataManager.load(event.getEntityId())
                        .joinTransaction(false)
                        .fetchPlan("userMessage-fetch-plan")
                        .one();
                UserMessageEvent userMessageEvent = new UserMessageEvent(this,
                        userMessage.getSubject(),
                        userMessage.getMessage(),
                        true,
                        userMessage.getRecipients(),
                        userMessage.getSender(),
                        false,
                        userMessage.getSendToAll());
                globalUiEventPublisher.publishEvent(userMessageEvent);
            }
        } catch (Exception e) {
            log.error("Error handling User Message changes after commit", e);
        }
    }

If I do not include @Transactional then I receive the error:

TransactionRequiredException: 
Exception Description: No transaction is currently active

Why is this so ?

@TransactionalEventListener without parameters comes into play when the transaction is completed but still exists. Unfortunately DataManager cannot identify this situation and start a new transaction automatically.

So it’s stated in the docs: Entity Events :: Jmix Documentation. You should either start a new transaction explicitly, or use joinTransaction(false) method of the fluent loader.

Ok, so that is the main reason why I posted. I actually followed the documentation and used

joinTransaction(false)

Even when I stated joinTransaction(false), I got the error.
Is this therefore a bug ?

Are you sure you get the exception in the above calls to DataManager and not in later processing of your published event?

It usually happens later on. Point taken.