嗨,我有一个父实体说 A,它有一个子实体列表说 List<B> children。
我需要维护子实体的顺序,因为它对我的应用程序很重要。
有序集合如何维护它们的顺序。
@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);
}
并删除使用:
for (int i = index + 1; i < objList.size(); i++) {
objList.get(i).setIndex(i - 1);
}
objList.remove(index);
这是正确的方法吗?添加和移动似乎工作。但是 Delete 的行为很奇怪。随机对象被删除,列表处于完全不一致的状态!
盖伊:1.7.2
DataNucleus 增强器(版本 3.1.0.m2)