NPE 在组合领域对象中设置对象值

NPE Setting Object Value in Composed Realm Object

我是领域的新手。 我正在尝试在领域中插入单个对象: 我的模型是:

public class Citizen extends RealmObject implements Serializable {
    private static final long serialVersionUID = 1L;
    @PrimaryKey
    @SerializedName("idCitizen")
    private long id;
    private String postalSection;
    private int localityId;
    private int stateId;
    private int age;
    private String gender;
    private Evaluation evaluation;
    private User user;
    @SerializedName("degree")
    private Grade grade;
    .... // getters and setters
}                    

等级模型:

public class Grade extends RealmObject implements Serializable {
    private static final long serialVersionUID = 1L;
    @SerializedName("idDegreeGrade")
    private int gradeId;
    @SerializedName("gradedsc")
    private String grade;
    // ... getters and setters
}

这是我尝试插入对象时所做的:

Realm realm = Realm.getInstance(ctx);
realm.beginTransaction();
Citizen citizen = realm.createObject(Citizen.class);
citizen.setAge(age); // This is OK
citizen.setGender(gender); // This is OK

Grade grade = new Grade();
grade.setGradeId(gradeId);
citizen.setGrade(grade); // This generate NPE

问题是我调试的时候,citizen 和 grade 都不为空。 我得到:

java.lang.NullPointerException
at io.realm.CitizenRealmProxy.setGrade(CitizenRealmProxy.java:180)
at com.myapp.action.CreateCitizenTask.onPostExecute(CreateCitizenTask.java:109)

当我尝试设置用户时也会发生:

citizen.setUser(myuser);

知道为什么吗???

组合对象必须由以下人员创建:

 Grade grade = realm.createObject(Grade.class);

而不是:

 Grade grade = new Grade()