Добавление пользовательского кода в объекты greenDAO

Я хочу добавить собственный код в мои объекты greenDAO. Я видел что-то вроде охраняемых районов. Но мне не нравится идея регистрировать сгенерированные классы в моем git-репозитории. Я хотел бы использовать наследование для этого.

т.е. у меня есть сущность User, Поэтому я хочу, чтобы greenDAO генерировал класс с именем UserBase, Это я хочу продлить на User и реализовать такой метод:

public String getFullName() {
    return this.first + " " + this.last;
}

куда first а также last являются управляемыми свойствами.

Но я понятия не имею, как сказать GreenDAO использовать класс User вместо сгенерированного объекта UserBase, Есть какой-либо способ сделать это?

2 ответа

Решение

Я нашел способ, как решить эту проблему:

Вы можете ввести родителя для каждой сущности:

Entity user = schema.addEntity("User");
...
user.setSuperclass("UserBase");

Таким образом, вы можете реализовать UserBase как абстрактный класс.

public abstract class UserBase {

  public String getFullName() {
    return getFirst() + " " + getLast();
  }

  public abstract int getFirst();
  public abstract int getLast();
}

Недостатком здесь является то, что вы должны объявить сгенерированные геттеры как абстрактные методы для доступа к ним.

Общий подход заключается в использовании "сохранить разделы" в сгенерированных объектах. Сохранение разделов позволяет добавлять члены и методы непосредственно в сгенерированную сущность. Проверьте здесь для деталей: http://greendao-orm.com/documentation/modelling-entities/

Другие вопросы по тегам