समस्या शायद आपकी आईडी पीढ़ी की रणनीति है (बशर्ते आपने संपर्क को ठीक से शुरू किया हो)। उपयोगकर्ता ऑब्जेक्ट को अपना आईडी सेट करने के लिए डीबी में डाला जाना चाहिए, लेकिन साथ ही संपर्क को इस आईडी को वैध वस्तु होने की आवश्यकता है। दोनों को करना होगा एक ही लेन-देन में होता है।
यदि आप अपने जेपीए के लिए लॉगिंग स्तर को फाइन में बदल देते हैं (पर्सटिटेंस.एक्सएमएल में), तो आपको उपयोगकर्ता और संपर्क डालने का क्रम दिखाई देगा, लेकिन संपर्क में user_id 0 होगा।
तो, ए) सुनिश्चित करें कि आपने अपने संपर्क में उपयोगकर्ता को स्पष्ट रूप से सेट किया है (जैसा कि आपने कहा था कि संबंध संपर्क द्वारा प्रबंधित किया जाता है। बी) उपयोगकर्ता पर संपर्क सेट करें। सी) जारी रखें (एक लेनदेन में)। आपके जेपीए कार्यान्वयन के आधार पर यह अभी भी काम नहीं कर सकता है (जारी किए गए प्रश्नों की जांच करें, सबसे अधिक संभावना संपर्क पर सम्मिलित होगी और फिर अपडेट होगी)। जेनरेशन रणनीति को टेबल में बदलें, टेबल जेपीए के साथ अगली मुफ्त आईडी लेता है, इसे ऑब्जेक्ट को असाइन करता है और इंसर्ट करता है ताकि इंसर्ट से पहले यह "ज्ञात" हो।