2013-06-02 36 views
0

我使用eclipse創建基於應用引擎的應用,其中我也使用應用引擎數據存儲(使用JPA)使用端點。 我在 https://developers.google.com/eclipse/docs/endpoints-addentities 的幫助下編寫了一個測試應用程序,效果很好。使用應用引擎設置自己的Key in Entity

現在我想創建一個實體,在其中定義自己的密鑰而不是由系統自動分配。有人可以幫助我,我在Notes.java實體類中需要做什麼。默認情況下,Notes.java是這樣的。

package com.bfp.mypackage; 
import javax.persistence.Entity; 
import javax.persistence.Id; 

@Entity 
    public class Note { 

     @Id 
     private String id; 
        private String emailAddress; 
     private String description; 
       public Note() { 
     } 

     public String getId() { 
     return id; 
     } 

     public String getDescription() { 
     return description; 
     } 

     public String getEmailAddress() { 
     return emailAddress; 
     } 

     public void setId(String idIn) { 
     this.id = idIn; 
     } 


     public void setDescription(String description) { 
     this.description = description; 
     } 

     public void setEmailAddress(String emailAddress) { 
     this.emailAddress = emailAddress; 
     } 

      } 

當我測試這個代碼,我看到與價值觀我開發的應用程序服務器管理控制檯創建的註釋實體(一個EMAILADDRESS,一個dsescription和ID(我通過時間戳有))我已經提供。當我在管理控制檯中查看實體時,會看到另外兩個字段。一個「鑰匙」和其他「寫操作」。現在,我所理解的「Key」字段是由java自動生成的字段。無論如何,我可以將我的emailAddress字段設置爲密鑰?如果是這樣,那麼我需要在上面的代碼中做什麼更改。這樣我可以使用emailAddress作爲每個實體的唯一鍵。

回答

0

您必須將您的電子郵件地址設置爲「密鑰」名稱:密鑰由自動遞增的長ID或用戶分配的密鑰名稱定義,該密鑰名稱對於實體類型是唯一的。

我不是使用JPA最實驗,因爲我主要使用JDO和低級別的做法,但你可能有,而不是直接使用java.lang.String屬性的com.google.appengine.api.datastore.Key對象... 低級別的API方法是: KeyFactory.createKey("EntityName", "[email protected]");

相關問題