मेरी इकाइयों में से एक के लिए यहां एक समग्र प्राथमिक कुंजी है।@IdClass जेपीए एनोटेशन
public class GroupMembershipPK implements Serializable{
private static final long serialVersionUID = 7816433876820743311L;
private User user;
private Group group;
public GroupMembershipPK(){
}
public boolean equals(Object o){
if(o==null){
return false;
}
if(o instanceof GroupMembershipPK){
final GroupMembershipPK groupMembershipPK=(GroupMembershipPK)o;
return groupMembershipPK.group.getGroupName().equals(this.group.getGroupName()) &&
groupMembershipPK.user.getName().equals(this.user.getName());
}
return false;
}
public int hashCode(){
return super.hashCode();
}
}
उपरोक्त का उपयोग एक समग्र प्राथमिक कुंजी के रूप में मेरी इकाई (भाग का) है।
@Entity
@IdClass(GroupMembershipPK.class)
public class GroupMembership extends AbstractModelElementVersionOther{
private static final long serialVersionUID = 9188465566607060376L;
private String memType;
private Group group;
private User user;
public GroupMembership(){
super();
}
@Column(nullable=false)
public String getMemType(){
return this.memType;
}
public void setMemType(String memType){
this.memType=memType;
}
@Id
@ManyToOne
@JoinColumn(name="groupId")
public Group getGroup(){
return this.group;
}
public void setGroup(Group group){
this.group=group;
}
@Id
@ManyToOne
@JoinColumn(name="userId")
public User getUser(){
return this.user;
}
public void setUser(User user){
this.user=user;
}
@Override
public boolean equals(Object o) {
//
मैं एक छोटे से क्या ऊपर इकाई के लिए बराबर विधि कार्यान्वयन होना चाहिए पर उलझन में हूँ। मैं दो समग्र प्राथमिक कुंजी की तुलना कैसे कर सकता हूं?
मेरे कोड के अन्य भागों पर कोई भी टिप्पणी भी स्वागत है।
तुम भी, userId और ग्रुप गुण का उपयोग करता है के बाद से बराबर वस्तुओं भी एक ही हैश होना आवश्यक है एक hashCode विधि को लागू करना चाहिए। उदाहरण के लिए: (getUserId() == शून्य? 0: getUserId()। हैशकोड())^(getGroupId() == null? 0: getGroupId()। हैशकोड()) –
@ जोर्न होर्स्टमान हाय, आप हैं सही। लेकिन इसे लागू किया गया है केवल उत्तर के कारण कार्यान्वयन बराबर है। वैसे भी धन्यवाद –
@ आर्थर रोनाल्ड। धन्यवाद, पूरी तरह से काम करता है। हालांकि, क्या आप मुझे बता सकते हैं कि उपर्युक्त वर्णित समग्र प्राथमिक कुंजी का उपयोग करके इकाई को कैसे बनाए रखना है? जब मैं ऐसा करने का प्रयास करता हूं तो मुझे जेबॉस में निम्न त्रुटि मिलती है .------- "थ्रेड में अपवाद" मुख्य "javax.ejb.EJBException: javax.persistence.PersistenceException: org.hibernate.id.IdentifierGenerationException: के लिए आईडी सहेजने से पहले इस वर्ग को मैन्युअल रूप से असाइन किया जाना चाहिए() " – soontobeared