Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

जेपीए OneToMany/ManyToOne संबंध काम नहीं कर रहा - मुझे क्या याद आ रहा है?

मुख्य बात जिस पर आप ध्यान देना चाहेंगे वह है स्वामित्व पक्ष . को परिभाषित करना संबंध का सही ढंग से। जहां तक ​​​​मुझे याद है, आधिकारिक दस्तावेज (कभी-कभी समझने में मुश्किल) से मेरा टेकअवे यह था कि मालिक पक्ष बहुत अधिक है जो डिफ़ॉल्ट रूप से कैस्केड और पारदर्शी विलोपन को ट्रिगर करेगा।

उदाहरण के लिए, उपरोक्त में, आपने स्वामित्व पक्ष को ProjectEntity . के रूप में परिभाषित किया है , इसलिए काम करने के लिए कैस्केड दृढ़ता के लिए सबसे महत्वपूर्ण कदम परियोजना को PersonEntity.projects में जोड़ना है ।

फिर आप persist . को कॉल करना चाहेंगे संबंध के स्वामी पक्ष पर, अर्थात

em.persist(projectTest);

यदि यह मदद नहीं करता है, तो मैं सुझाव दूंगा कि आप अपने जेपीए प्रदाता में एसक्यूएल लॉगिंग सक्षम करें ताकि यह पता लगाया जा सके कि यह कौन से कथन निष्पादित करने का प्रयास कर रहा है, और विशेष रूप से इन इकाइयों को किस क्रम में insert किया जा रहा है एड.

मौजूदा टिप्पणियों के अनुसार, पहले व्यक्ति को बनाए रखने का प्रयास करें। यदि आप ऐसा करते हैं, तो मेरा मानना ​​है कि निरंतर को जोड़ने का सही तरीका है रिश्ते के लिए इकाई, यानी:

PersonEntity persistedPerson = em.persist(personTest);
projectTest.setPersonId(persistedPerson);
em.persist(projectTest);


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. एमवीसी 5 में स्टोर प्रक्रिया वापस मूल्य नहीं है

  2. MySQLConverter' ऑब्जेक्ट में mysql-कनेक्टर के साथ कोई विशेषता नहीं है '_tuple_to_mysql' अपवाद

  3. बाइनरी लॉग से डेटा पढ़ते समय मास्टर से मैसकल त्रुटि 1236

  4. एक क्वेरी में कई से कई तालिकाओं का चयन करें

  5. स्क्लेल्केमी, कच्ची क्वेरी और पैरामीटर