gpt4 book ai didi

java - 为什么我得到 Only ancestor queries are allowed inside transactions 错误

转载 作者:搜寻专家 更新时间:2023-10-31 08:17:27 24 4
gpt4 key购买 nike

boolean r = ofy().transact(new Work<Boolean>() {

@Override
public Boolean run() {
Visit visit = ofy().load().type(Visit.class)
.filter(Visit.USER_ID, userID)
.filter(Visit.VENUE_ID, venueID).first().get();

if (visit == null)
return false;

visit.setLastRequestDate(new Date(timestamp));

ofy().save().entity(visit).now();
return true;
}
});

我明白了

java.lang.IllegalArgumentException: Only ancestor queries are allowed inside transactions.

用于 get() 调用的行。
为什么?我在此事务中仅查询 Visit 实体。我在事务中这样做,因为我希望所有这些都作为原子操作执行。

最佳答案

无法在事务中进行无祖先查询。您可以在没有事务的情况下执行此操作,也可以使用 get 替换查询。

你能做的最接近的是:

  1. 通过无祖先查询获取实体,无需事务。记住实体的键。
  2. 开始交易。
  3. 通过键获取实体。
  4. 检查查询条件是否仍然适用(= 属性仍然具有与查询条件相同的值)。这样您就可以确定实体在您进行查询后没有发生变化。
  5. 更改并保存实体。提交交易。

关于java - 为什么我得到 Only ancestor queries are allowed inside transactions 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14397207/

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