如何使用GWT更新数据存储区实体

时间:2014-02-14 12:38:27

标签: entity google-cloud-datastore gxt objectify

我正在使用谷歌网络工具包构建游戏。我试图在获胜后更新玩家的分数。分数和玩家信息被放置在数据存储区中。我只能更新分数一次,如果玩家获胜不止一次得分没有得到更新。 这是代码:

@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???

2 个答案:

答案 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>