है इसलिए मेरे पास एक उपयोगकर्ता तालिका, प्रोजेक्ट टेबल और उपयोगकर्ता_रोल्स तालिका है। मेरे पास एक उपयोगकर्ता है जो 2 परियोजनाओं से जुड़ा हुआ है, लेकिन जब मेरे पास सिर्फ एक ही भूमिका है तो यह उन 2 परियोजनाओं को वापस लाती है, लेकिन अगर मेरे पास 2 भूमिकाएं हैं तो यह 4 भूमिकाएं (2x2 परियोजनाएं) लौटाती है। मैं कैसे रोकूं इसहाइबरनेट डुप्लिकेट देता है क्योंकि दूसरी तालिका में डुप्लिकेट मान
यह है उपयोगकर्ता वर्ग में उपयोगकर्ता के लिए परियोजनाओं की सूची लौटने
@Override
public List<Project> retrieve(User user) {
Criteria criteria = super.createCriteria();
criteria.addOrder(Order.desc("date"));
criteria.createCriteria("users").add(Restrictions.eq("id", user.getId()));
return (List<Project>) criteria.list();
}
मैपिंग के लिए मेरे कोड
@ManyToMany(cascade = CascadeType.ALL)
@JoinTable(name = "Users_Projects",
joinColumns = @JoinColumn(name = "UserID"), inverseJoinColumns = @JoinColumn(name = "ProjectID"))
public List<Project> getProjects() {
return projects;
}
@ElementCollection(fetch = FetchType.EAGER)
@Enumerated(EnumType.STRING)
@Column(name = "RoleType")
@JoinTable(name = "User_Roles", joinColumns = @JoinColumn(name = "UserID"))
public Set<Role> getRoles() {
return roles;
}
कोई सुझाव है कि समस्या क्या यहाँ है?
tnx
धन्यवाद! एक आकर्षण की तरह काम किया, क्या आप हालांकि समझा सकते हैं कि भूमिकाओं को लोड करने का कारण क्यों होगा। मुझे यह भी यकीन है कि यह मामला है, लेकिन मैं सिर्फ यह नहीं मानता कि ऐसा कुछ क्यों सेट करेगा जो उपयोगकर्ताओं के कनेक्शन का हिस्सा नहीं है-परियोजनाएं इसका कारण बनती हैं। कोई विचार? –
अपनी टिप्पणी में प्रश्न पर थोड़ा और अपडेट के लिए मेरा अपडेट देखें। –