【问题标题】:How to change order in ordered+persisted collection?如何更改有序+持久化集合中的顺序?
【发布时间】:2010-05-25 01:46:14
【问题描述】:

我只需要更改(以前持久的)有序集合中的项目顺序...

我尝试简单地将重新排列的集合传递给 setter:提交事务后,集合就消失了。
然后我尝试 clear() 现有集合和 addAll() 之后: clear() 使持久管理器将所有元素标记为已删除。 (但显然我希望能够在交易中处理收集项目。)

(该集合不在默认提取组中,因此我也尝试了上述方法,并将命名提取组添加到提取计划中。没有运气。)

这一定是最愚蠢的问题,但我的想法已经用完了,而且我已经被困在这里两天了。我发誓我用谷歌搜索过。 :(

【问题讨论】:

    标签: java google-app-engine collections google-cloud-datastore


    【解决方案1】:

    数据的顺序在索引中设置。不幸的是,删除或重置索引的功能目前不存在 (How-to delete indexes in Google App Engine (Java)?.

    但是,可以动态更改索引。看看http://rahulswackyworld.blogspot.com/2010/03/dynamic-indexes-with-google-app-engine.html

    【讨论】:

    • 谢谢。只要它有帮助,它就必须这样做,即使听起来有点奇怪,没有人需要更改集合中项目的顺序。不过,我使用的是 Java,并且考虑到链接的解决方案可以与 Python 一起使用,我实现起来可能并不容易。所以,我只是在想,你认为删除父对象并重新创建它并重新安排集合属性是否有意义? (除此之外它将保持不变,包括相同的密钥。)
    • 也许可以。从理论上讲,这是一个糟糕的想法,但实际上,它可能会奏效。问题似乎是 google-data-store over 简化了集合关系,并且没有给出改变读取它们的查询的明显方法(您应该能够在查询中使用 order by 来获取给定集合中的集合订单,但这不能很好地自动接线。
    • 是的,很糟糕,我同意。反正我不会这么走。好吧,鉴于我无法从谷歌得到官方消息,我想你给了我答案。谢谢你的时间,马修。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-07
    • 2020-12-05
    • 1970-01-01
    • 2014-10-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多