I would handle this in your application. If you get a lock exception in your cancelRequest() operation, just catch the Exception and retry the transaction until it commits.
You could also use a JPQL update query, as it does not check the lock version.