You can put @Transactional on java interfaces. The classes that implement that interface will then be enhanced to with the transactional support.
There is a situation where this enhancement does not take effect. Specifically when you are:
- using the Eclipse IDE Enhancement plugin
- Have a class that implements an interface
- Later, change the interface via adding @Transactional
The issue is that the enhancement that should occur on all classes that implement that interface will not occur until those classes are re-saved.
To workaround this issue: make sure all classes that implement that changed interface are saved after the change to the interface. Perform a project - clean for example.