Objectify不返回新数据

时间:2014-11-25 12:32:32

标签: java google-cloud-datastore objectify

我使用Ojectify存储数据存储区,我有一个实体,当我保存它时如果保存更改,但在浏览器中显示它有时会显示以前的数据,有时会显示新数据。

@Entity 
public class BrandDto {
    @Id
    private Long id;
    @Index
    private String name;

    @Index
    private List<Ref<UserDto>> users;

    @Index
    private Integer numeroFollowers;

    getters and setters ..... 
}

它发生在usersnumeroFollowers字段中。

我按如下方式更新此数据:

UserDto user = ofy().load().type(UserDto.class).id(p_userId).now();
if (user != null) {
    BrandDto brand = ofy().load().type(BrandDto.class).id(p_brandId).now(); //get(p_brandId);
    List<UserDto> users = brand.getUsers() != null ? brand.getUsers() : new ArrayList<UserDto>();
    if (!users.contains(user)) {
       users.add(user);
    }
    brand.setUsers(users);
    brand.setNumeroFollowers(users.size());
    ofy().save().entity(brand).now();
    return true;
} else {
    return false;
}

我读到如下:

List<BrandDto> brands = ofy().load().type(BrandDto.class).list();

我使用的其他查询:

UserDto user = ofy().load().type(UserDto.class).id(p_userId).now();
Ref<UserDto> ref = Ref.create(user);
List<BrandDto> brands = ofy().load().type(BrandDto.class).filter("users", ref).list();

1 个答案:

答案 0 :(得分:2)

虽然默认情况下按键操作(如load().type(...).id(...))非常一致,但查询最终是一致的。

以下是更多信息:https://cloud.google.com/developers/articles/balancing-strong-and-eventual-consistency-with-google-cloud-datastore/