我需要在 a 内进行查询Transaction
,但是我不知道实体@Id,我拥有的是一个字段的值,例如用户名,但不是ID,
换句话说,我无法创建一个Key
进行查询。我如何进行查询以获取实体内的实体Transaction
?
在不深入研究更深层次的设计问题的情况下,实际上有两种选择:
1) 在事务之外运行查询。
Objectify(您在这篇文章中标记的)使得即使在事务内部也可以轻松执行非事务性查询。只需生成一个与事务无关的新 ofy 实例并使用它来运行查询...然后返回到事务中工作。请记住,这确实会中断事务,并可能会影响操作的完整性。很多时候这并不重要。
如果您使用的是 Objectify4,您只需运行如下操作:
ofy.transactionless.load().type(Thing.class).filter("field", value)...etc
2)使用查找实体
在处理用户名等问题时,这通常是正确的答案。创建一个单独的实体,将用户名映射到您的 User 对象,如下所示:
class Username {
@Id String username;
Key<User> user;
}
每次创建用户时,使用 XG 事务创建一个用户名,如果您允许更改用户名,则更新它。现在,要按用户名执行用户的事务性查找,请首先查找用户名,然后使用它来查找用户。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)