0

我编写了一个 @PrePersist 方法,该方法在我的 User 对象被持久化之前调用。该方法的目的是为用户进行一种预订,因此其他人无法获取他的电子邮件地址。因此,当用户即将被持久化时,我会说,“为用户 #xyz 创建一个 EmailReservation。”

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

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

  1. 找出实体在持久化时将具有的 id
  2. 在持久化之前为已创建的实体提供特定的 id。

有任何想法吗?

4

1 回答 1

1

无法知道实体在持久化时将拥有什么 ID;这样做的唯一方法是使用 allocateIds。

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

于 2011-09-26T03:24:25.637 回答