gpt4 book ai didi

java - 使用 JAVA 数据存储中的自定义迭代器显示零

转载 作者:行者123 更新时间:2023-11-30 03:38:07 24 4
gpt4 key购买 nike

我使用数据存储实体来存储 int 值 number=0。在 add 函数中,我使用了 count = number++。但是第一次应用程序推送到GAE时,它显示0。然后它从1开始。所以我更改为int number = 10,即使我得到的值为零但数据存储存储为10。如何在java页面中获取更新的值插入一条记录后?当我尝试获取当前值时,它显示零,但在数据存储中它存储为 10。请帮我解决这个问题。如何获取值 10。这种情况仅在第一次部署和第一个票证时才会显示正确的值(迭代器值)

谢谢

这是我的代码

@Entity
public class Ticket {

//static int nextID = 17;

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String title;
private Text description;
static int nextID = 10;
private int current;


public Ticket(String title, Text description) {
current = nextID++;
this.title = title;
this.priority = priority;
this.description = description;
}

最佳答案

Google Cloud Platform 拥有多个数据中心,它们并不总是保存相同记录的相同状态。如果您在增加值后立即查询该值,则尤其如此。您可以使用祖先查询来检索实体,这将使其保持最新且一致。详情请查看文章[1]。

这是祖先查询的链接 [2]。这个想法是,当您使用祖先查询时,它会强制查询在所有更改完成后返回数据(对于该查询)。这确保了最新的强一致性。

[1] - https://cloud.google.com/developers/articles/balancing-strong-and-eventual-consistency-with-google-cloud-datastore/

[2] - https://cloud.google.com/appengine/docs/java/datastore/queries#Java_Ancestor_queries

======== 示例(来 self 提供的第二个链接)

DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();

Entity tom = new Entity("Person", "Tom");
Key tomKey = tom.getKey();
datastore.put(tom);


Entity weddingPhoto = new Entity("Photo", tomKey);
weddingPhoto.setProperty("imageURL",
"http://domain.com/some/path/to/wedding_photo.jpg");

Entity babyPhoto = new Entity("Photo", tomKey);
babyPhoto.setProperty("imageURL",
"http://domain.com/some/path/to/baby_photo.jpg");

Entity dancePhoto = new Entity("Photo", tomKey);
dancePhoto.setProperty("imageURL",
"http://domain.com/some/path/to/dance_photo.jpg");

Entity campingPhoto = new Entity("Photo");
campingPhoto.setProperty("imageURL",
"http://domain.com/some/path/to/camping_photo.jpg");

List<Entity> photoList = Arrays.asList(weddingPhoto, babyPhoto,
dancePhoto, campingPhoto);
datastore.put(photoList);


Query photoQuery = new Query("Photo")
.setAncestor(tomKey);


// This returns weddingPhoto, babyPhoto, and dancePhoto,
// but not campingPhoto, because tom is not an ancestor
List<Entity> results = datastore.prepare(photoQuery)
.asList(FetchOptions.Builder.withDefaults());

========请参阅这些部分:

Entity weddingPhoto = new Entity("Photo", tomKey);

Entity dancePhoto = new Entity("Photo", tomKey);

这会生成一个具有祖先键“tomKey”的实体。

现在将实体保存到数据存储中:

List<Entity> photoList = Arrays.asList(weddingPhoto, babyPhoto,
dancePhoto, campingPhoto);
datastore.put(photoList);

当您需要获取结果时,执行特殊查询:

Query photoQuery = new Query("Photo")
.setAncestor(tomKey);

这确保了 photoQuery 不仅仅是针对任何随机数据中心提取任何数据的随机查询;它确保从数据存储中获取最新数据。

关于java - 使用 JAVA 数据存储中的自定义迭代器显示零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27352920/

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