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()
我是领域的新手。 我正在尝试在领域中插入单个对象: 我的模型是:
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()