मुझे नहीं लगता कि आप 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 ।
बेशक, मैंने यह कोशिश नहीं की है, इसलिए मैं गलत हो सकता हूं।