我有一个字符串和整数作为字段的对象,我可以毫无问题地更新。我只是找到具有唯一ID的正确字段并调用setPersonalName(“Mike”);并使用pm.makePersistent(Personal)创建此对象;它完成了!
问题在于数组字段。假设个人有作业并将其存储在
中@Persistent
private String[] Assignments;
假设我想更新第3个作业,所以我打电话给Personal.setAssignment(3,“给报告”);
和pm.makePersistent(个人); 这不会以某种方式持久化,并且在日志中没有任何错误(仅此:org.datanucleus.ObjectManagerImpl关闭:未提交的nontx更新提交到数据存储区)!我已经检查了值是否在对象中,它是。该值已在对象Personal中。字段没有任何问题,这些字段不是数组。 (顺便说一下,我可以从头开始添加这样的对象,只更新不起作用)。
感谢您的任何想法,我整天都在研究,但找不到任何东西......
这里是setAssignment方法:
public void setAssignment(int AssignmentNo, String Assignment) {
this.Assignments[AssignmentNo-1] = Assignment;
System.out.println(this.Assignments[AssignmentNo-1] + " " + AssignmentNo + " " + this.id);
}
答案 0 :(得分:1)
如果您使用的是JDO,则使用集合将多值属性存储在数据存储区中,如以下链接所述: http://code.google.com/appengine/docs/java/datastore/jdo/dataclasses.html#Collections
我希望这有帮助!
答案 1 :(得分:0)
好的,我找到了解决方案。它现在是关于阵列的。不知何故,每个更新操作必须通过一个简单的setAssignments(String [] Assignments),您可以在其中更新整个数组而不是其中的一个元素。某处我发现jdo以某种方式使用这些方法来更改数据存储区中的字段。如果要更改数组中的元素,则必须将“整个”数组更改为this.Assignments = newAssignments;
而不是this.Assignments[i] = newAssignment;