5

पर पॉप्युलेट नहीं किया गया है जब मैं एक वर्ग बनाता हूं जो "gae.encoded-pk" और "gae.pk-id" दोनों को परिभाषित करता है, तो एन्कोडेड-पीके अपडेट किया जाता है, लेकिन आईडी शून्य हो जाती है । फेंकने का कोई अपवाद नहीं है और कोड Google के दस्तावेज़ से सीधी प्रतिलिपि पेस्ट है, इसलिए मुझे यहां क्या हो रहा है, इस बारे में एक नुकसान हुआ है।Datanucleus gae.pk-id makePersistent

वर्ग की परिभाषा:

@PersistenceCapable 
public class MyClass { 
    @PrimaryKey 
    @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY) 
    @Extension(vendorName="datanucleus", key="gae.encoded-pk", value="true") 
    private String encodedKey; 

    @Persistent 
    @Extension(vendorName="datanucleus", key="gae.pk-id", value="true") 
    private Long keyId; 

और मैं यह लगातार इस तरह बनाना: मैं इस कोड से निकलने के लिए डिबगर उपयोग कर रहा हूँ

PersistenceManager pm = PMF.get().getPersistenceManager(); 
try { 
    pm.makePersistent(myInstance); 
    // myInstance = pm.makePersistent(myInstance); - Produces the same result. 
} finally { 
    pm.close(); 
} 

, लेकिन Keyid अशक्त बना हुआ है के बाद भी, दृढ़ता प्रबंधक बंद है।

मुझे यह भी इंगित करना चाहिए कि यह Google appengine विकास किट का उपयोग करके स्थानीय रूप से चल रहा है। किसी भी पॉइंटर्स के रूप में मैं इसे कैसे डिबग कर सकता हूं इसकी सराहना की जाएगी!

GAE JDO प्लगइन ही कभी एक "gae.pk-आईडी"/"gae.pk-नाम" फ़ील्ड जब यह एक क्षेत्र डेटास्टोर से उस के साथ चिह्नित में पढ़ता सेट (:

+0

यहां एक ही समस्या – craigrs84

उत्तर

1

मैं इस सवाल का जवाब मिल गया बस एसवीएन ट्रंक में एक खोज करें, FetchFieldManager एकमात्र ऐसा स्थान है जहां इसे लोड किया गया है - यह इसे PUT करते समय सेट नहीं करता है)। यह नहीं पता कि यह 1.x में क्या किया गया है, लेकिन जीएई के सभी परीक्षण 2.x में गुजरते हैं क्योंकि उन्होंने 1.x में किया था। लेकिन फिर वह "फीचर" मानक जेडीओ नहीं है, इसलिए मुझे बहुत कम रूचि है।

देखें: Unable to get ID of newly-created JDO persistent entity using GAE/J DataNucleus plug-in version 2.1.2

संबंधित मुद्दे