protected PersistenceException wrapLockException(HibernateException e, LockOptions lockOptions) {
   final PersistenceException pe;
   if (e instanceof OptimisticEntityLockException) {
     final OptimisticEntityLockException lockException = (OptimisticEntityLockException) e;
     pe =
         new OptimisticLockException(
             lockException.getMessage(), lockException, lockException.getEntity());
   } else if (e instanceof org.hibernate.exception.LockTimeoutException) {
     pe = new LockTimeoutException(e.getMessage(), e, null);
   } else if (e instanceof PessimisticEntityLockException) {
     final PessimisticEntityLockException lockException = (PessimisticEntityLockException) e;
     if (lockOptions != null && lockOptions.getTimeOut() > -1) {
       // assume lock timeout occurred if a timeout or NO WAIT was specified
       pe =
           new LockTimeoutException(
               lockException.getMessage(), lockException, lockException.getEntity());
     } else {
       pe =
           new PessimisticLockException(
               lockException.getMessage(), lockException, lockException.getEntity());
     }
   } else if (e instanceof org.hibernate.PessimisticLockException) {
     final org.hibernate.PessimisticLockException jdbcLockException =
         (org.hibernate.PessimisticLockException) e;
     if (lockOptions != null && lockOptions.getTimeOut() > -1) {
       // assume lock timeout occurred if a timeout or NO WAIT was specified
       pe = new LockTimeoutException(jdbcLockException.getMessage(), jdbcLockException, null);
     } else {
       pe = new PessimisticLockException(jdbcLockException.getMessage(), jdbcLockException, null);
     }
   } else {
     pe = new OptimisticLockException(e);
   }
   return pe;
 }
 public PersistenceException wrapLockException(HibernateException e, LockOptions lockOptions) {
   PersistenceException pe;
   if (e instanceof org.hibernate.OptimisticLockException) {
     org.hibernate.OptimisticLockException ole = (org.hibernate.OptimisticLockException) e;
     pe = new OptimisticLockException(ole.getMessage(), ole, ole.getEntity());
   } else if (e instanceof org.hibernate.PessimisticLockException) {
     org.hibernate.PessimisticLockException ple = (org.hibernate.PessimisticLockException) e;
     if (lockOptions != null && lockOptions.getTimeOut() > -1) {
       // assume lock timeout occurred if a timeout or NO WAIT was specified
       pe = new LockTimeoutException(ple.getMessage(), ple, ple.getEntity());
     } else {
       pe = new PessimisticLockException(ple.getMessage(), ple, ple.getEntity());
     }
   } else {
     pe = new OptimisticLockException(e);
   }
   return pe;
 }