簡體   English   中英

GAE-刪除對象后列表不會保留(DataNucleus和JDO)

[英]GAE - List does not persist after removing an object (DataNucleus & JDO)

我有一個實體,我的屬性之一是對象的ArrayList,該對象已序列化。 我正在嘗試刪除列表的元素之一並保留該實體。 一切在本地都可以正常運行,但部署時不能正常運行。

我的代碼:

@Inject
public Repository<User> userRepo;
...
Leader leader = (Leader) item.getModelObject();
...
MySession.get().getUser().getLeaders().remove(leader);
JDOHelper.makeDirty(MySession.get().getUser(), "leaders");
userRepo.persist(MySession.get().getUser());

用戶實體中的屬性定義:

@Persistent(defaultFetchGroup = "true", serialized = "true")
@Extension(vendorName = "datanucleus", key = "gae.unindexed", value = "true")
private ArrayList<Leader> leaders = new ArrayList<Leader>();

我正在使用datanucleus-core版本1.1.6,jdo2-api 2.3-eb和datanucleus-appengine 1.0.10

當我將新項目添加到列表時,它可以正常工作,但是當我刪除某些項目時,效果卻不佳-為什么會這樣? 我該如何運作呢?

弄臟東西會使它變臟,僅此而已。 持久/刷新發生在……下一個事務開始(根據JDO / JPA規范)或PM / EM關閉之后; 調用makePersistent / persist不會改變它。 這不是DataNucleus“決定自己”不持久化對象,而是遵循規范。

如果您使用最新的GAE版本(v2.0),則可以具有非事務性原子持久性/刪除性(對規范的擴展)。 如果您使用SVN主干(v2.1),您還可以進行非事務性原子更新(將其進一步擴展)。 即,使用最新代碼,您將獲得與JDBC“自動提交”等效的功能

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM