Я хочу использовать встроенный класс POJO в моем постоянном объекте.
Это необходимо для соответствия модели данных сервера в моем приложении для Android.Приложение, использующее инфраструктуру GreeanDao для слоя БД DAO и самописную библиотеку на основе аннотаций для обмена данными с сервером * * Я просто хочу упомянуть, что переписывание библиотеки в соответствии с ограничениями также может быть решением, но перед этим, я хочу понять,если есть естественный способ или существующий вариант использования.
Я полагаю, что могу использовать аннотацию @Transient
с моим полем POJO и сохранить копию полей POJO в классе Entity, чем просто возиться с установщиками полей копирования иКонструктор Green Daou полагается на инициализацию поля POJO.Но это звучит немного неуклюже, если вы спросите меня.
public class Person{
private String firstName, secondName;
private int age;
/* getters and setters */
}
import org.greenrobot.greendao.annotation.Entity;
import org.greenrobot.greendao.annotation.Id;
import org.greenrobot.greendao.annotation.Keep;
import org.greenrobot.greendao.annotation.Property;
import org.greenrobot.greendao.annotation.Transient;
import org.greenrobot.greendao.annotation.Generated;
@Entity
public class Employee {
@Id(autoincrement = true)
private long id;
@Transient
private Person person;
@Property(nameInDb = "PERSON_FIRST_NAME")
private String firstName;
@Property(nameInDb = "PERSON_SECOND_NAME")
private String secondName;
@Property(nameInDb = "PERSON_AGE")
private int age;
@Keep
public Employee(long id, String firstName, String secondName, int age) {
this.id = id;
this.firstName = firstName;
this.secondName = secondName;
this.age = age;
initPerson();
}
@Generated(hash = 202356944)
public Employee() {
}
private void initPerson(){
if(this.person == null)
this.person = new Person();
person.setFirstName(this.firstName);
person.setSecondName(this.secondName);
person.setAge(this.age);
}
public Person getPerson() {
return person;
}
public void setPerson(Person person) {
this.person = person;
this.setAge(person.getAge());
this.setFirstName(person.getFirstName());
this.setSecondName(person.getSecondName());
}
public void setFirstName(String firstName) {
this.firstName = firstName;
initPerson();
}
public void setSecondName(String secondName) {
this.secondName = secondName;
initPerson();
}
public void setAge(int age) {
this.age = age;
initPerson();
}
/* some getters etc */
}