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