iva*_*ras 0 java google-app-engine jdo
我不打算成为一个孩子的问题,因为我不得不独立操纵它,而且我不想坚持问题领域,我会通过手动检索问题来填补它.这是代码.
Questionnaire.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;
Run Code Online (Sandbox Code Playgroud)
Question.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(){
}
Run Code Online (Sandbox Code Playgroud)
会吐出这个错误:
org.datanucleus.store.appengine.MetaDataValidator $ DatastoreMetaDataException:com.ivanceras.server.Question.questionID的元数据错误:不能有java.lang.Long主键并且是子对象(拥有字段是com.ivanceras .server.Questionnaire.questions).
添加@NotPersistent可能有帮助.
GAE/J文件完全具有误导性; 他们建议你需要@Persistent在每个领域,这是完全错误的.所有字段都有一个默认持续标志......之类的东西String,元,Collection,List,Set,Map在默认情况下持久的,因此没有必要@Persistent对这些.这一点已经向Google多次提出,但文档仍然有这个.
如果您想要根据JDO规范获得明确信息,请使用DataNucleus文档
| 归档时间: |
|
| 查看次数: |
830 次 |
| 最近记录: |