Executing an update/delete query; nested exception is javax.persistence.TransactionRequiredException: Executing an update/delete query
ApplicationRepository, I am assuming that you are using Spring JPA.
The exception you are facing to is
You have already added
@Transactional annotation to the repository, but please make sure that the import which you are using for is
org.springframework.transaction.annotation.Transactional, because it seems that you might be using
I also suggest to you to use
@Transactional on the class/method of the repository consumer.
Spring-boot TransactionRequiredException: Executing an update/delete query
Because there are multiple TransactionManagers beans defined in the project, you have to annotate transactions of non-primary TransactionaManagers with their names. For example, in my config above, the TransactionManager name is defined as "transactionManager".
So, the Transactional annotation on methods should look line this : @Transactional("transactionManager")
Executing an update/delete query in the JQPL query
You need to wrap your statements with
@Transactional. To be JPA compliant you should use
javax.transaction.Transactional, although in some version combination of spring-data if
javax.transaction.Transactional causes issues you can try using
Keep in mind that in JPA it's all about entity state transitions. When you modify the entities hiberante updates the Persistence Context and flushes it periodically.
The order in which this happens is:
So naturally inserts and updates are before deletes.
When you have code which does: delete + insert the insert will actually be performed before the delete. In such cases the correct way is the fetch and update.
Unable to delete row : TransactionRequiredException: Executing an update/delete query
You can check following things in your code:
If you are using spring based transaction then make sure you import org.springframework.transaction.annotation.Transactional class for @Transactional annotation
In your case it might be javax.transaction.Transactional
I see deleteClientByClientId method in your code as static. @Transactional in spring does not have support for static methods. Make your method non static which is annotated as transactional.
You can refer @Transactional with static method
Let me know, which option works for you.