我正在使用谷歌网络工具包构建游戏。我试图在获胜后更新玩家的分数。分数和玩家信息被放置在数据存储区中。我只能更新分数一次,如果玩家获胜不止一次得分没有得到更新。 这是代码:
@Override
public User updateScore(int newScore,String username) {
User user = ofy().load().type(User.class).id(username).get();
user.setScore(newScore);
ofy().save().entity(user).now();
return user;
)
any idea???
答案 0 :(得分:1)
您需要使用交易。阅读本文:
https://code.google.com/p/objectify-appengine/wiki/Concepts?tm=6#Transactions
虽然它可能会或可能不会影响您的后续查询,但您还应该了解数据存储区中的最终一致性:
https://developers.google.com/appengine/docs/java/datastore/structuring_for_strong_consistency
答案 1 :(得分:1)
建议的交易,如果它有ObjectifyFilter,也检查你的web.xml文件!
<filter>
<filter-name>ObjectifyFilter</filter-name>
<filter-class>com.googlecode.objectify.ObjectifyFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>ObjectifyFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>