gpt4 book ai didi

google-app-engine - 事务内部只允许Ancestor查询,如何处理?

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

我需要在 Transaction 中进行查询,但是我不知道实体 @Id,我拥有的是一个字段的值,比如用户名而不是 ID,

换句话说,我无法创建一个 Key 来进行查询。如何进行查询以获取 Transaction 中的实体?

最佳答案

在不深入研究更深层次的设计问题的情况下,实际上有两个选择:

1) 在事务之外运行查询。

Objectify(您用它标记了这篇文章)使得即使在事务内部也能轻松执行非事务查询。只需生成一个与事务无关的新 ofy 实例并使用它来运行查询……然后返回处理您的事务。请记住,这确实会中断事务并且可能会影响操作的完整性。通常这无关紧要。

如果您使用的是 Objectify4,您可以像这样运行操作:

ofy.transactionless.load().type(Thing.class).filter("field", value)...etc

2) 使用查找实体

在处理诸如用户名之类的事情时,这通常是正确的答案。创建一个单独的实体,将用户名映射到您的用户对象,如下所示:

class Username {
@Id String username;
Key<User> user;
}

每次您创建用户时,使用 XG 交易创建一个用户名,如果您允许更改用户名,则更新它。现在,要按用户名执行用户事务查找,首先查找用户名,然后使用它来查找用户。

关于google-app-engine - 事务内部只允许Ancestor查询,如何处理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11361008/

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