code: public static void registerRowKeyProperty(final Class<?> cls, final String rowKeyPropertyName) {
          if (ClassUtil.getPropGetMethod(cls, rowKeyPropertyName) == null || ClassUtil.getPropSetMethod(cls, rowKeyPropertyName) == null) {
              throw new IllegalArgumentException("The specified class: " + ClassUtil.getCanonicalClassName(cls)
                      + " doesn't have getter or setter method for the specified row key propery: " + rowKeyPropertyName);
          }
  
          final Method setMethod = ClassUtil.getPropSetMethod(cls, rowKeyPropertyName);
          final Class<?> parameterType = setMethod.getParameterTypes()[0];
          Class<?>[] typeArgs = ClassUtil.getTypeArgumentsByMethod(setMethod);
  
          if (HBaseColumn.class.equals(parameterType) || (typeArgs.length == 1 && typeArgs[0].equals(HBaseColumn.class))
                  || (typeArgs.length == 2 && typeArgs[1].equals(HBaseColumn.class))) {
              throw new IllegalArgumentException(
                      "Unsupported row key property type: " + setMethod.toGenericString() + ". The row key property type can't be be HBaseColumn");
          }
  
          classRowkeySetMethodPool.put(cls, setMethod);
      }
docs: The row key property will be read from/write to the specified property
  
  @param cls entity classes with getter/setter methods
  @param rowKeyPropertyName