code: private static void addAttrCondition(final List<Condition> conditions, final String name, Object value) {
      if (value instanceof String) {
        if (Strings.isBlank((String) value)) { return; }
        StringBuilder content = new StringBuilder(name);
        content.append(" like :").append(name.replace('.', '_'));
        conditions.add(new Condition(content.toString(), "%" + value + "%"));
      } else if (value instanceof Component) {
        conditions.addAll(extractComponent(name, (Component) value));
        return;
      } else if (value instanceof Entity<?>) {
        try {
          final String key = "id";
          Object property = PropertyUtils.getProperty(value, key);
          if (ValidEntityKeyPredicate.Instance.apply(property)) {
            StringBuilder content = new StringBuilder(name);
            content.append('.').append(key).append(" = :").append(name.replace('.', '_')).append('_')
                .append(key);
            conditions.add(new Condition(content.toString(), property));
          }
        } catch (Exception e) {
          logger.warn("getProperty " + value + "error", e);
        }
      } else {
        conditions.add(new Condition(name + " = :" + name.replace('.', '_'), value));
      }
    }
docs: 为extractConditions使用的私有方法<br>
  
  @param conditions
  @param name
  @param value
  @param mode