मुख्य बात जिस पर आप ध्यान देना चाहेंगे वह है स्वामित्व पक्ष . को परिभाषित करना संबंध का सही ढंग से। जहां तक मुझे याद है, आधिकारिक दस्तावेज (कभी-कभी समझने में मुश्किल) से मेरा टेकअवे यह था कि मालिक पक्ष बहुत अधिक है जो डिफ़ॉल्ट रूप से कैस्केड और पारदर्शी विलोपन को ट्रिगर करेगा।
उदाहरण के लिए, उपरोक्त में, आपने स्वामित्व पक्ष को ProjectEntity
. के रूप में परिभाषित किया है , इसलिए काम करने के लिए कैस्केड दृढ़ता के लिए सबसे महत्वपूर्ण कदम परियोजना को PersonEntity.projects
में जोड़ना है ।
फिर आप persist
. को कॉल करना चाहेंगे संबंध के स्वामी पक्ष पर, अर्थात
em.persist(projectTest);
यदि यह मदद नहीं करता है, तो मैं सुझाव दूंगा कि आप अपने जेपीए प्रदाता में एसक्यूएल लॉगिंग सक्षम करें ताकि यह पता लगाया जा सके कि यह कौन से कथन निष्पादित करने का प्रयास कर रहा है, और विशेष रूप से इन इकाइयों को किस क्रम में insert
किया जा रहा है एड.
मौजूदा टिप्पणियों के अनुसार, पहले व्यक्ति को बनाए रखने का प्रयास करें। यदि आप ऐसा करते हैं, तो मेरा मानना है कि निरंतर को जोड़ने का सही तरीका है रिश्ते के लिए इकाई, यानी:
PersonEntity persistedPerson = em.persist(personTest);
projectTest.setPersonId(persistedPerson);
em.persist(projectTest);