PersistenceManager的makePersistent方法工作不穩定。同一個junit-test正在工作,過了一段時間它又失敗了! 我有一個包含其他對象集合的對象。這意味着1-n關係。 我的問題是,我的類的junit測試有時會失敗,因爲集合中的對象沒有正確保存。 我使用通常的交易,但persistanceManager是交易可選makePersistent擁有一對多rs。在JDO中不能可靠地工作
我嘗試檢查每個創建對象後objectState並承諾... 我想通了,該集合中的對象後成功提交沒有的systenId(應該是自動生成),但處於空心/持久非事務狀態。
有時它們(如果它們持續)這意味着:
註釋[的systenId =項目(1)/評論(6),JDO-ObjectState =空心/持久非]
有時它們(如果它們不持久和父對象的refach包含一個空的集合) 註釋[的systenId = NULL,JDO-ObjectState =空心/持久非]
關閉當然,我可以查手動如果所有存儲的對象都有systemId,但這種方法根本不好。提交應該只是失敗!
我不明白,它有時工作,有時不是!這意味着我的代碼不應該是錯的,這是一個錯誤... 請幫我一下
PS:我可以發佈一些代碼,如果有必要!
@PersistenceCapable
public class Ble implements Serializable, JDOObject<Ble> {
/**
*
*/
private static final long serialVersionUID = 1L;
// NotNull
@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
private Key systemId;
// NotNull
@Persistent
private Key parentId;
// NotNull
@Persistent
@Extension(vendorName = "datanucleus", key = "gae.parent-pk", value = "true")
private Key projectId;
// NotNull
@Persistent
private String title;
@Persistent
private int position;
@Persistent
private boolean hasChildren;
@Persistent
private BleData requirementData;
@Persistent
private List<Comment> comments;
//getter/setter
}
childObject
@PersistenceCapable
public class Comment implements Serializable, JDOObject<Comment> {
/**
*
*/
private static final long serialVersionUID = 1L;
@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
private Key systemId;
@Persistent
private String text;
@Persistent
private long createdTimestamp;
//getter//Setter
}
看着日誌會告訴你很多。 – DataNucleus
好的,我可以在哪裏找到「日誌」? – headgrowe
*您*定義了哪裏? 「log4j.properties」會定義它。 – DataNucleus