How to re-load entity edit screen data (changed in background) by EntityChangedEvent?

@TransactionalEventListener
    public void onClientChangedAfterCommit(EntityChangedEvent<Client> event) {
        try {
            uiEventPublisher.publishEvent(new ClientChangedEvent(event.getSource()));
        } catch (Exception e) {
            log.error("Error handling Client changes after commit", e);
        }    }

Really provide me with error in log:

javax.persistence.TransactionRequiredException: 
Exception Description: No transaction is currently active
	at org.eclipse.persistence.internal.jpa.transaction.EntityTransactionWrapper.throwCheckTransactionFailedException(EntityTransactionWrapper.java:89) ~[org.eclipse.persistence.jpa-2.7.9-6-jmix.jar:na]
	at org.eclipse.persistence.internal.jpa.transaction.EntityTransactionWrapper.checkForTransaction(EntityTransactionWrapper.java:52) ~[org.eclipse.persistence.jpa-2.7.9-6-jmix.jar:na]
	at org.eclipse.persistence.internal.jpa.EntityManagerImpl.checkForTransaction(EntityManagerImpl.java:2200) ~[org.eclipse.persistence.jpa-2.7.9-6-jmix.jar:na]
	at org.eclipse.persistence.internal.jpa.EntityManagerImpl.flush(EntityManagerImpl.java:979) ~[org.eclipse.persistence.jpa-2.7.9-6-jmix.jar:na]
	at io.jmix.eclipselink.impl.EclipselinkPersistenceSupport$ContainerResourceSynchronization.detachAll(EclipselinkPersistenceSupport.java:599) ~[jmix-eclipselink-1.4.4.jar:na]
	at io.jmix.eclipselink.impl.EclipselinkPersistenceSupport$ContainerResourceSynchronization.beforeCommit(EclipselinkPersistenceSupport.java:554) ~[jmix-eclipselink-1.4.4.jar:na]
	at org.springframework.transaction.support.TransactionSynchronizationUtils.triggerBeforeCommit(TransactionSynchronizationUtils.java:97) ~[spring-tx-5.3.24.jar:5.3.24]
	at org.springframework.transaction.support.AbstractPlatformTransactionManager.triggerBeforeCommit(AbstractPlatformTransactionManager.java:916) ~[spring-tx-5.3.24.jar:5.3.24]
	at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:727) ~[spring-tx-5.3.24.jar:5.3.24]
	at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:711) ~[spring-tx-5.3.24.jar:5.3.24]
	at io.jmix.eclipselink.impl.JpaDataStore.commitTransaction(JpaDataStore.java:395) ~[jmix-eclipselink-1.4.4.jar:na]
	at io.jmix.core.datastore.AbstractDataStore.load(AbstractDataStore.java:95) ~[jmix-core-1.4.4.jar:na]
	at io.jmix.core.impl.UnconstrainedDataManagerImpl.load(UnconstrainedDataManagerImpl.java:97) ~[jmix-core-1.4.4.jar:na]
	at io.jmix.ui.model.impl.InstanceLoaderImpl.load(InstanceLoaderImpl.java:91) ~[jmix-ui-1.4.4.jar:na]
	at com.company.test1.screen.client.ClientEdit.onClientChangedEvent(ClientEdit.java:42) ~[main/:na]
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:na]
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
	at java.base/java.lang.reflect.Method.invoke(Method.java:566) ~[na:na]
.....
.....

Similar problem on the forum (@TransactionalEventListener causing error “No transaction is currently active”) give me solution:

    @Transactional
    @TransactionalEventListener
    public void onClientChangedAfterCommit(EntityChangedEvent<Client> event) {
    .....
    }
1 Like