xyb*_*rek 8 google-app-engine objectify
我需要在一个内部进行查询Transaction,但是我不知道实体@Id,我所拥有的是一个字段的值,比如用户名而不是ID,
换句话说,我无法创建一个Key查询.如何进行查询以获取实体内部Transaction?
sti*_*ure 15
如果不深入研究更深层的设计问题,有两种选择:
1)在事务之外运行查询.
Objectify(您使用此标记标记)使得即使在事务内部也可以轻松执行非事务性查询.只是生成一个与事务无关的新实例,并使用它来运行查询...然后返回到您的事务中工作.请记住,这确实会破坏事务,并可能影响操作的完整性.通常没关系.
如果你正在使用Objectify4,你可以像这样运行:
ofy.transactionless.load().type(Thing.class).filter("field", value)...etc
Run Code Online (Sandbox Code Playgroud)
2)使用查找实体
在处理用户名之类的事情时,这通常是正确的答案.创建一个单独的实体,将用户名映射到User对象,如下所示:
class Username {
@Id String username;
Key<User> user;
}
Run Code Online (Sandbox Code Playgroud)
每次创建用户时都使用XG事务创建用户名,如果允许更改用户名,则更新用户名.现在,要通过用户名执行User的事务性查找,首先查找Username,然后使用它来查找User.
| 归档时间: |
|
| 查看次数: |
3367 次 |
| 最近记录: |