所以我正在阅读有关在GAE中定义自己的属性类型的the following文档。我注意到在扩展新属性时我还可以包含.validate()方法。当对属性进行赋值以确保它与您指定的属性兼容时,将调用此验证方法。很公平,但究竟是什么时候?
我的问题是,这个验证方法究竟何时被调用?具体来说,它是在放入之前还是之后调用的?如果我在事务中创建此实体,是在事务内还是在事务之前调用?
我最清楚地知道,每个Property应该是“自包含的”或者最多只应该处理实体所处的状态。但是,如果在validate方法中执行了Query,会发生什么?如果您在与当前交易实体组不同的实体组中进行验证,那会不会爆炸?
答案 0 :(得分:2)
分别在交易之前和交易期间(如果验证失败,它可能会中止交易)。 “在对您的实体的属性进行分配时”是您编写theentity.theproperty = somevalue
时(或当您隐式执行它时)。
我相信在交易期间(在验证或其他情况下)对不相关实体的查询是非交易性的(因此非常不实践),但不是禁止的 - 但在最后一点我不确定。