Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 有没有办法使用JDO在GAE/J中拥有一个非持久性字段?_Java_Google App Engine_Jdo - Fatal编程技术网

Java 有没有办法使用JDO在GAE/J中拥有一个非持久性字段?

Java 有没有办法使用JDO在GAE/J中拥有一个非持久性字段?,java,google-app-engine,jdo,Java,Google App Engine,Jdo,我希望问题不是孩子,因为我必须独立操作它,我不想保留问题字段,我想通过手动检索问题来填充它。这是代码 java @PersistenceCapable(identityType = IdentityType.APPLICATION) public class Questionnaire{ //supposedly non-persistent public List<Question> questions = new ArrayList<Question>

我希望问题不是孩子,因为我必须独立操作它,我不想保留问题字段,我想通过手动检索问题来填充它。这是代码

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;
@PersistenceCapable(identityType=identityType.APPLICATION)
公共课问卷{
//假定非持久性
公共列表问题=新建ArrayList();
@主键
@持久性(valueStrategy=IdGeneratorStrategy.IDENTITY)
公共长问卷;
@持久的
公共字符串标题;
@持久的
私人物品;
@持久的
公共字符串描述;
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(){

    }
@PersistenceCapable(identityType=identityType.APPLICATION)
公开课问题{
//也不是持久性的
public ArrayList choiceList=new ArrayList();
@主键
@持久性(valueStrategy=IdGeneratorStrategy.IDENTITY)
公共长问卷;
@持久的
公共字符串文本;
@持久的
公共长问卷;
公众问题({
}
会说出这个错误:


org.datanucleus.store.appengine.MetaDataValidator$DatastoreMetaDataException:com.ivanceras.server.Question.questionID的元数据中出现错误:不能有java.lang.Long主键且不能是子对象(所属字段为com.ivanceras.server.questionly.questions)。

添加
@NotPersistent
可能会有所帮助

GAE/J文档完全是误导性的;它们建议您在每个字段上都需要
@Persistent
,这是完全错误的。所有字段都有一个默认的Persistent标志,
字符串
、原语、
集合
列表
设置
映射
等默认情况下都是持久的,因此不需要
@Persistent
。这一点已经向谷歌提出了好几次,但文档中仍然有这一点


如果您希望根据JDO规范获得清晰的信息,请使用DataNucleus文档添加
@NotPersistent
可能会有所帮助

GAE/J文档完全是误导性的;它们建议您在每个字段上都需要
@Persistent
,这是完全错误的。所有字段都有一个默认的Persistent标志,
字符串
、原语、
集合
列表
设置
映射
等默认情况下都是持久的,因此不需要
@Persistent
。这一点已经向谷歌提出了好几次,但文档中仍然有这一点

如果您希望根据JDO规范获得清晰的信息,请使用DataNucleus文档添加“transient”也可能有帮助添加“transient”也可能有帮助