Альтернатива для поддержания отдельных констант для имен полей


При использовании Sqlite в качестве БД в android Многие из нас создают класс, подобный DbConstants, где мы сохраняем все имена таблиц, имена столбцов как константы.

В случае Realm DB мы готовим классы POJO, которые представлены в виде таблиц и полей в виде имен столбцов соответственно.

Есть ли какой-либо способ, однако, который я могу избежать создания другого файла констант здесь ?

Пример Использования:

POJO, представляющий таблицу пользователей:

public class User extends RealmObject {

private String          name;
private int             age;

@Ignore
private int             sessionId;

// Standard getters & setters generated by your IDE…
public String getName() { return name; }
public void   setName(String name) { this.name = name; }
public int    getAge() { return age; }
public void   setAge(int age) { this.age = age; }
public int    getSessionId() { return sessionId; }
public void   setSessionId(int sessionId) { this.sessionId = sessionId;       
 }
}

Итак, пока мы запрашиваем пользовательскую таблицу следующим образом :

RealmResults<User> result = realm.where(User.class)
                              .equalTo("name", "John")
                              .or()
                              .equalTo("name", "Peter")
                              .findAll();

Я не хочу использовать здесь такие литералы, как" имя". Итак, любое другое элегантное решение или лучшая практика ?

1 2

1 ответ:

Обычной практикой является наличие статической конечной константы в классе модели, например:

public class User extends RealmObject {
  public static final String NAME = "name";
  public static final String AGE = "age";

  // Fields, constructors, getters, setters,
}

realm.where(Person.class).equalTo(Person.NAME, "John").findAll();

Если вы хотите автоматизированный способ сделать это, вы можете взглянуть на: https://github.com/cmelchior/realmfieldnameshelper