gpt4 book ai didi

google-app-engine - 添加到 google-appengine 中的集合

转载 作者:太空宇宙 更新时间:2023-11-03 15:37:12 25 4
gpt4 key购买 nike

所以我已经在这个问题上停留了大约 3 周了。我读过这个:http://code.google.com/appengine/docs/java/datastore/jdo/relationships.html它似乎并没有解决。基本上我有一个持久对象,称为池,我需要将玩家添加到这个池中。玩家也是持久对象。我在池和玩家之间有一个无主关系,其中池有一组玩家 ID(primaryKey ids ...)

所以我尝试过的事情:1)我使用 Long 作为两者的主键,这没有用。2) 尝试使用应用引擎中的 Key 作为主键,但这没有用,因为您不能在客户端使用 Key 的实现。我发现的解决方法都不起作用,而且数据传输对象草率/凌乱/容易出错/骇人听闻以及各种不好的。3) 尝试使用字符串作为 id,像这样...

@Extension(vendorName="datanucleus", key="gae.encoded-pk", value="true")
private String id;

那也没用。当我尝试将一个字符串添加到它的集合中时,就像这样......

public void addPlayers(Pool pool, List<String> players) {
PersistenceManager pm = getPersistenceManagerFactory().getPersistenceManager();

try {
pm.currentTransaction().begin();
Pool oldPool = pm.getObjectById(Pool.class, pool.getID());
for(String id : players) {
oldPool.addPlayer(id);
System.out.println("Added id:" + id);
}
pm.currentTransaction().commit();
} catch (Exception e) {
pm.currentTransaction().rollback();
e.printStackTrace();
} finally {
pm.close();
}

}

它会悄无声息地失败。正如......它只是不坚持他们。

任何建议都会很棒。这是一个学校项目,所以不幸的是我被迫在 GWT 中使用 JDO 来完成它。我的教授和助教无法帮助我,因为他们不熟悉 GWT...有趣...所以这是我最后的选择:)

谢谢!

最佳答案

虽然有充分的理由将您的关系表示为实体“一”侧的列表,但更常用的方法是让“多”侧的实体引用“一”侧的实体' 边。也就是说,不是每个 Pool 都有一个 Players 列表,每个 Player 应该有一个对其所属的单个 Pool 的引用。

您有没有采用这种方法的原因?你试过了吗?

关于google-app-engine - 添加到 google-appengine 中的集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5469132/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com