A pitfall when using #javaSpring Framework @Transactional annotation is self-invocation. In the code below you'd expect in that the first save() will be rolled back. But it won't. To work properly the @Transactional method needs to be called from another service.