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

हाइबरनेट - कई टूवन और इनहेरिटेंस / जॉइन / मैप किया गया

मुझे नहीं लगता कि आप ManyToOne . को मैप करके इसे हासिल कर सकते हैं User . से संबद्धता सामान्य रूप से UserActivity . में कंपनी। यह शायद जेपीए प्रदाता (हाइबरनेट) के लिए बहुत भ्रमित करने वाला है।

इसके बजाय, मुझे लगता है कि आपको एसोसिएशन को User . से मैप करने की आवश्यकता है प्रत्येक . में Question . का , Answer और Comment संस्थाएं हां, मुझे पता है कि यह डुप्लीकेट कोड होगा, लेकिन ऐसा लगता है कि यह एकमात्र तरीका है जिससे आप OneToMany को क्वालिफाई कर पाएंगे। User . में मैपिंग mappedBy . का उपयोग करके संदर्भ।

उदाहरण के लिए, आपका Question इकाई के रूप में परिभाषित एक संघ होगा:

@ManyToOne(cascade = { MERGE, PERSIST }, fetch = LAZY)
@JoinColumn(name = "ua_user_id")
private User questionUser;

उपरोक्त संबद्धता के बारे में हाइबरनेट कितना चतुर (या नहीं) है, इस पर निर्भर करते हुए, आपको table="USER_ACTIVITY" निर्दिष्ट करने की आवश्यकता हो सकती है JoinColumn . में एनोटेशन।

फिर User OneToMany के रूप में होगा:

@OneToMany(mappedBy="questionUser", cascade = REMOVE)
private List<Question> questions = new ArrayList<>();

इसी तरह प्रत्येक Answer . के लिए और Comment

बेशक, मैंने यह कोशिश नहीं की है, इसलिए मैं गलत हो सकता हूं।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. अलग-अलग समय क्षेत्रों में PHP सर्वर और MySQL सर्वर से निपटना

  2. क्या आप ORDER BY में if स्टेटमेंट जोड़ सकते हैं?

  3. अपरिभाषित विधि पर कॉल करें Illuminate\\Database\\Schema\\ Blueprint::increments()

  4. शीर्ष-स्तरीय पैरेंट MySQL को पुनः प्राप्त करें

  5. विभिन्न टूर्नामेंट/प्रतियोगिता प्रकारों (लीग, लैडर, सिंगल/डबल एलिमिनेशन आदि) के लिए डेटा संरचना