我不打算让问题成为孩子,因为我必须独立操作它,而且我不想保留问题字段,我会通过手动检索问题来填写它。这是代码。
问卷调查.java
@PersistenceCapable(identityType = IdentityType.APPLICATION)
public class Questionnaire{
//supposedly non-persistent
public List<Question> questions = new ArrayList<Question>();
@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
public Long questionnaireID;
@Persistent
public String title;
@Persistent
private int items;
@Persistent
public String description;
问题.java
@PersistenceCapable(identityType = IdentityType.APPLICATION)
public class Question{
//non-persistent as well
public ArrayList<Choice> choiceList = new ArrayList<Choice>();
@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
public Long questionID;
@Persistent
public String text;
@Persistent
public long questionnaireID;
public Question(){
}
会吐出这个错误:
org.datanucleus.store.appengine.MetaDataValidator$DatastoreMetaDataException:com.ivanceras.server.Question.questionID 的元数据错误:不能有 java.lang.Long 主键并且是子对象(拥有字段是 com.ivanceras .server.Questionnaire.questions)。