public MapPessimisticWriteLockingStrategy(Lockable lockable, LockMode lockMode) {
   this.lockable = lockable;
   this.lockMode = lockMode;
   TypeTranslator typeTranslator =
       lockable.getFactory().getServiceRegistry().getService(TypeTranslator.class);
   this.identifierGridType = typeTranslator.getType(lockable.getIdentifierType());
 }
 protected String generateLockString() {
   SessionFactoryImplementor factory = lockable.getFactory();
   Update update = new Update(factory.getDialect());
   update.setTableName(lockable.getRootTableName());
   update.addPrimaryKeyColumns(lockable.getRootTableIdentifierColumnNames());
   update.setVersionColumnName(lockable.getVersionColumnName());
   update.addColumn(lockable.getVersionColumnName());
   if (factory.getSettings().isCommentsEnabled()) {
     update.setComment(lockMode + " lock " + lockable.getEntityName());
   }
   return update.toStatementString();
 }
 protected String generateLockString() {
   SessionFactoryImplementor factory = lockable.getFactory();
   SimpleSelect select =
       new SimpleSelect(factory.getDialect())
           .setLockMode(lockMode)
           .setTableName(lockable.getRootTableName())
           .addColumn(lockable.getRootTableIdentifierColumnNames()[0])
           .addCondition(lockable.getRootTableIdentifierColumnNames(), "=?");
   if (lockable.isVersioned()) {
     select.addCondition(lockable.getVersionColumnName(), "=?");
   }
   if (factory.getSettings().isCommentsEnabled()) {
     select.setComment(lockMode + " lock " + lockable.getEntityName());
   }
   return select.toStatementString();
 }