2011-09-24 68 views
0

我寫了一個@PrePersist方法,在我的User對象被持久化之前調用。該方法的目的是爲用戶做一種預約,所以沒有人可以把他的電子郵件地址。所以,當用戶即將被持續時,我說,「爲用戶#xyz創建一個EmailReservation」。來自已實例化但未存儲的實體的訪問鍵[objectify] [@prepersist]

我的麻煩是在用戶未被保存之前獲取#xyz。該id爲null,但我不能使用DatastoreService.allocateIds,因爲將代表我的用戶的實體已經創建。我有權訪問該實體,但getKey()返回一個帶有空id的密鑰 - 它尚未確定它的id是什麼。

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

  1. 找出的ID的實體將擁有時,它的持續
  2. 給包括已經創建了一個特定的ID是之前的實體持續存在。

任何想法?

回答

1

沒有辦法知道一個實體在持久化時會有什麼ID;唯一的方法是使用allocateIds。

您必須創建用戶對象,並向它之前要麼生成一個ID,或實體已被寫入到數據存儲後做你的工作。