An ClassNotPersistenceCapableException is thrown if an attempt is
made to persist or otherwise manage an object whose class is not persistence-
capable.
An ConnectionInUseException is thrown if an operation is attempted
that requires a new database connection (such as Transaction.begin()) and a
previously obtained database connection (such as for non-transactional read
or write) is still in-use.
An TransactionActiveException is thrown if a transaction is already
active and an operation is performed that requires that a transaction not be
active (such as beginning a transaction).
An TransactionCompletionException is thrown if a commit or rollback
is already in progress and an operation is attempted that cannot be performed
during transaction completion.
An TransactionNotActiveException is thrown if a transaction is not
active and an operation is performed that requires that a transaction be
active (such as committing a transaction).