This exception hierarchy aims to let user code find and handle the
kind of error encountered without knowing the details of the particular
data access API in use (e.g. JDBC). Thus it is possible to react to an
optimistic locking failure without knowing that JDBC is being used.
As this class is a runtime exception, there is no need for user code
to catch it or subclasses if any error is to be considered fatal
(the usual case).