3类:A,B,C。 B扩展A,A具有List ,如何使它们在GAE Java中持久化
|
我的层次结构是:
记录是一个超类,WellnessRecord就是扩展记录的许多类。
还有另一类注意事项。记录拥有一个列表。
现在,我想使用GAE for Java,并在GAE的有关拥有的一对多关系的文档中阅读以下内容后,制作makePersistent(WellnessRecord):http://code.google.com/appengine/docs/java/datastore/ jdo / relationships.html#Owned_One_to_Many_Relationships
我在Note.java中编写了此代码:
@Persistent
private Record record //only for mapping to the owner class
在Record.java中:
@Persistent(mappedBy = \"record\", defaultFetchGroup = \"true\")
@Element(dependent = \"true\")
protected LinkedList<Note> notes = new LinkedList<Note>();
但是它没有按我预期的那样工作!
我可以通过在WellnessRecord \的可变便笺中添加一个便笺来添加Note()和makePersistence(WellnessRecord)
我可以通过getObjectById()获取特定的WellnessRecord来进行editNote()编辑,当我编辑笔记时,GAE将跟踪修改并自动保存。
但是,当我想要deleteNote()时,总会有例外。
我调试了程序,发现从数据库中获取WellnessRecord并删除Record
\'notes
中的Note
非常顺利,但是,将修改保存到数据库中时会出现异常!
我跟踪了执行过程,发现Note中的\“ record \”变量即使为makePersistent()也仍然为null。
在我的项目中,还有一个具有List的Item类,我类似地编写了@注释,但是addRecord(),editRecord(),deleteRecord()进行得很好。因此问题应该出在GAE对多态性的支持上!
我对该问题的假设是:当addNote()或editNote()时,我首先找到Record,然后通过Record修改Note,因为Record可以轻松找到该Note,所以运行得很好。
但是,当deleteNote()删除内存中的对象后,GAE会跟踪修改并想删除数据库中的注释,但是由于注释的\“ record \”为注释,因此它无法通过注释找到所有者记录。空值。
那是我详细的问题。
一句话:3个类:A,B和C。B扩展了A,A有一个List,如何使它们在GAE Java中持久化?
任何建议表示赞赏!
没有找到相关结果
已邀请:
0 个回复