docs: @Override
      public Collection<T> readAll() {
          ensureOpen();
  
          String sql = String.format("Select PROPERTY_NAME, PROPERTY_VALUE,PARENT_ID from %s_property", className);
          Cursor cursor = database.rawQuery(sql, new String[0]);
          HashMap<String, JsonObject> objects = new HashMap<String, JsonObject>(cursor.getCount());
          try {
              while (cursor.moveToNext()) {
                  String id = cursor.getString(2);
                  JsonObject object = objects.get(id);
                  if (object == null) {
                      object = new JsonObject();
                      objects.put(id, object);
                  }
                  add(object, cursor.getString(0), cursor.getString(1));
              }
              ArrayList<T> data = new ArrayList<T>(cursor.getCount());
              for (JsonObject object : objects.values()) {
                  data.add(gson.fromJson(object, klass));
              }
  
              return data;
  
          } finally {
              cursor.close();
          }
  
      }