2011-08-31 49 views
0

我有一個字符串和整數作爲字段的對象,我可以更新沒有問題。我只用唯一的id找到正確的字段,並調用setPersonalName(「Mike」);並使用pm.makePersistent(Personal)創建此對象;它完成了!對象不會更新

問題在於數組字段。比方說,一個人有任務,我存儲這些在

@Persistent 
private String[] Assignments;  

比方說,我想等我打電話Personal.setAssignment(3,「給報告」)來更新第三個分配;

and pm.makePersistent(Personal); 這不會以某種方式持久化,並且在日誌中沒有任何錯誤(只有這個: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

'假設我想更新第三個作業,因此我將其稱爲Personal.setAssignment(3,「給報告」 );' - 由於數組是基於0的,所以不應該是'Personal.setAssignment(2,「給出報告」);'? – Thomas

+0

是的,我正在處理setAssignment()函數。它減1並用作數組的索引。 – Genom

回答

1

如果您正在使用JDO,那麼多值屬性存儲在使用如下面的鏈接描述集數據存儲: ​​

我希望這有助於!

0

好的我找到了解決方案。現在是關於陣列。不知何故,每個更新操作都必須通過一個簡單的setAssignments(String [] Assignments),在其中更新整個數組而不是一個元素。在某處我發現jdo以某種方式使用這些方法來更改數據存儲中的字段。如果要更改數組中的元素,則必須將「整個」數組更改爲this.Assignments = newAssignments;而不是this.Assignments[i] = newAssignment;