嗨,我有一個父實體說A有子實體列表說明列表<B>孩子。GAE,JDO:添加,移動和刪除有序列表的實體
我需要維護子實體的順序,因爲它對我的應用程序很重要。
有序集合如何維護它們的順序。
@Persistent
@Element(dependent = "true")
@Order(extensions = @Extension(vendorName="datanucleus", key="list-ordering", value="index ASC"))
private List objects;
現在我使用添加到列表:
newObj.setIndex(0);
for (int i = 0; i < objList.size(); i++) {
objList.get(i).setIndex(i + 1);
}
objList.add(newObj);
移動使用:
if (direction.equalsIgnoreCase("up")) {
objList.get(index).setIndex(index - 1);
objList.get(index - 1).setIndex(index);
}
else if (direction.equalsIgnoreCase("down")) {
objList.get(index).setIndex(index + 1);
objList.get(index + 1).setIndex(index);
}
而且使用delete:
for (int i = index + 1; i < objList.size(); i++) {
objList.get(i).setIndex(i - 1);
}
objList.remove(index);
這是正確的做法嗎?添加&移動似乎工作。但是,刪除行爲很奇怪。隨機objs被刪除,列表處於完全不一致的狀態!
GAE:1.7.2
DataNucleus將增強(3.1.0.m2版)
完美!謝謝 :) – Srinivas