0

我用我的unicue ID創建密鑰,並保存到數據庫中。GAE用密鑰獲取數據使用JDO使用密鑰

GoogleDrivePDF pdf = new GoogleDrivePDF(); 
key= KeyFactory.createKey(GoogleDrivePDF.class.getSimpleName(),"0B1IQEoiXFg3IWHhJNEtlMzlvQWs"); 
pdf.setKey(key);   
pdf.setPdfName("NAME"); 

一切正常!

enter image description here 但知道我有一個問題。

爲了讓我的對象從Db我必須需要密鑰字符串。

GoogleDrivePDF pdf = pm.getObjectById(GoogleDrivePDF.class, "agtsdHYtY2hlY2tlcnJoCxIRVXNlcnNQREZEb2N1bWVudHMiIXZha2h0YW5nLmtvcm9naGxpc2h2aWxpQGdtYWlsLmNvbQwLEg5Hb29nbGVEcml2ZVBERiIcMEIxSVFFb2lYRmczSVdIaEpORXRsTXpsdlFXcww"); 

如何創建該密鑰?我認爲它是enycrypted的關鍵。我怎樣才能得到這個對象?

P.S我想因爲我有一對多的關係,這可能不起作用。因爲當我創建沒有1:N的pdf時,它會很好地得到對象。但我不能讓另一個DATAS,這是在1:N

我有一個錯誤:如果您想根據你的實體的一些其他領域(比如創建密鑰

Could not retrieve entity of kind GoogleDrivePDF with key GoogleDrivePDF("0ByMb_8ccYJRFOS1ibmFtamZ1b2M") 
org.datanucleus.exceptions.NucleusObjectNotFoundException: Could not retrieve entity of kind GoogleDrivePDF with key GoogleDrivePDF("0ByMb_8ccYJRFOS1ibmFtamZ1b2M") 

回答

0

溶液無主:

@Unowned 
@Persistent 
private Map <String,GoogleDrivePDF > pdfs; 
1

,例如,現場叫uniqueID),你應該做這樣的事情:

應堅持:

GoogleDrivePDF pdf = new GoogleDrivePDF(); 
pdf.setUniqueID("0B1IQEoiXFg3IWHhJNEtlMzlvQWs"); 
Key key = KeyFactory.createKey(GoogleDrivePDF.class.getSimpleName(),pdf.getUniqueID()); 
pdf.setKey(key); 
pm.makePersistent(pdf); 

順便說一下,通常不是公開訪問key字段的好選擇。我覺得這是更好地把代碼創建一個特定的構造函數中的關鍵,像

public GoogleDrivePDF(String uniqueID) { 
    this.setUniqueID(uniqueID); 
    this.key = KeyFactory.createKey(GoogleDrivePDF.class.getSimpleName(),uniqueID); 
} 

檢索:

String idToBeRetrieved = "0B1IQEoiXFg3IWHhJNEtlMzlvQWs"; 
Key key = KeyFactory.createKey(GoogleDrivePDF.class.getSimpleName(),idToBeRetrieved); 
pm.getObjectById(GoogleDrivePDF.class, key); 
+0

由於我寫在我的問題。當我有1:N的關係時,我有錯誤。沒有1:N它工作。 – grep

+0

我知道如何從數據庫中獲取數據!但是當我有1:N時它不起作用! – grep

+0

當我將@未知的註釋添加到pdf時,它的工作原理!爲什麼?! – grep