在GoogleEngine(Java)上,在JDO中,如何根据父ID来查询子对象列表?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了在GoogleEngine(Java)上,在JDO中,如何根据父ID来查询子对象列表?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1205字,纯文字阅读大概需要2分钟。
内容图文
![在GoogleEngine(Java)上,在JDO中,如何根据父ID来查询子对象列表?](/upload/InfoBanner/zyjiaocheng/672/f8abfdada1de4e90b1b3139d4db2b53f.jpg)
我有两个值对象,日历和事件,它们是持久的.日历的属性包含一个事件列表,具有一对多关系.日历是活动的父项,如下所示.
@Persistent
@Element(dependent = "true")
private List<Event> events;
现在,我希望能够基于Calendar对象键通过JDO查询检索与Calendar对应的事件.我对两个类都使用encodedKey.
我想在事件实体上运行查询,而不仅是检索整个Calendar对象,因为我希望只能够检索一组事件,以便进行分页.
我试图以任何可能的方式执行此操作,无法弄清楚如何通过父键进行查询.
任何帮助,将不胜感激.
解决方法:
一些注意事项:
实体中的列表属性(如您的List< Event>事件)存储为序列化的ProtocolBuffer.问题是:
>如果对该属性建立索引,则它们最多可包含5000个元素.
>每次查询列表时,都需要反序列化整个列表.如果您可以有选择地检索列表元素,那么这就是您的问题的答案:不能.
>如果实体中具有多个索引列表属性,则可能导致Exploding Indexes.
如果您想了解GAE数据存储的内部原理,则必须使用以下视频:http://www.youtube.com/watch?v=AgaL6NGpkB8
解决方案:
>使用Slatkin的视频中的解决方案:将Calendar设为Event的父项(以数据存储为术语).然后向查询添加父条件:Query.setAncestor(Key calendarKey).
更新:实体父关系应用于创建“实体组”,例如交易范围的单位.
>扭转情况:创建具有Calendar属性的Event实体,该Calendar属性指向事件所属的Calendar.然后,您可以简单地查询具有“ calendar == calendarKey”的事件.
内容总结
以上是互联网集市为您收集整理的在GoogleEngine(Java)上,在JDO中,如何根据父ID来查询子对象列表?全部内容,希望文章能够帮你解决在GoogleEngine(Java)上,在JDO中,如何根据父ID来查询子对象列表?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。