来自已实例化但未存储的实体的访问密钥 [对象化] [@prepersist]



我写了一个@PrePersist方法,它在我的User对象持久化之前被调用。该方法的目的是为用户进行某种预订,这样其他人就不能使用他的电子邮件地址。因此,当要持久化User时,我说,"为用户#xyz创建一个EmailReservation"。

我的问题是,当用户之前没有被持久化时,无法获得#xyz。id是空的,但是我不能使用DatastoreService。allocateIds,因为代表我的用户的实体已经创建了。我确实可以访问那个实体,但是getKey()返回一个null id的键-它还没有决定它的id将是什么。

所以,我希望下列情况之一是可能的:

  1. 找出一个实体在持久化时将拥有的id
  2. 给一个在持久化之前已经被创建的实体一个特定的id。

任何想法?

没有办法知道一个实体在持久化时会有什么ID;唯一的方法是使用allocateid。

您必须在创建User对象之前生成ID,将其传入,或者在将实体写入数据存储之后执行您的工作。

最新更新