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:事务中只允许祖先查询。
表示get()
来电。{
为什么?我只是在这个事务中查询Visit
实体。
我在一个事务中这样做,因为我希望所有这些都作为原子操作执行。
答案 0 :(得分:18)
无法在事务中执行无祖先查询。您可以在没有事务的情况下执行此操作,也可以使用get。
替换查询你最接近的是: