2010-08-13 12 views
10

के साथ हाइबरनेट क्वेरी मेरे पास एचक्यूएल क्वेरी और हाइबरनेट के साथ एक प्रश्न है।एचक्यूएल: कईToMany

मेरे पास एक उपयोगकर्ता वर्ग और एक भूमिका वर्ग है। एक उपयोगकर्ता की कई भूमिकाएं हो सकती हैं। उपयोगकर्ता कक्षा में

:

@ManyToMany(fetch = FetchType.LAZY) 
@oinTable(name = "PORTAIL_USERROLE", joinColumns = { @JoinColumn(name = "USERID", nullable = false, updatable = false) }, inverseJoinColumns = { @JoinColumn(name = "ROLE", nullable = false, updatable = false) }) 
public Set<Portailrole> getPortailroles() { 
    return this.portailroles; 
} 

भूमिका वर्ग में: तो मैं इस तरह एक ManyToMany relatation है

@ManyToMany(fetch = FetchType.LAZY) 
@JoinTable(name = "PORTAIL_USERROLE", joinColumns = { @JoinColumn(name = "ROLE", nullable = false, updatable = false) }, inverseJoinColumns = { @JoinColumn(name = "USERID", nullable = false, updatable = false) }) 
public Set<Portailuser> getPortailusers() { 
    return this.portailusers; 
} 

यह मानचित्रण एक 3 तालिका (PORTAIL_USERROLE) जहां संबंधों स्टॉक कर रहे हैं बनाया गया है। सभी इस तरह ठीक काम करते हैं। जब मेरे पास कोई उपयोगकर्ता होता है, तो मैं भूमिकाएं पुनर्प्राप्त करता हूं।

लेकिन, मेरा प्रश्न है: एक एचक्यूएल क्वेरी में, मैं उन सभी उपयोगकर्ताओं को कैसे प्राप्त कर सकता हूं जिनके पास एक विशिष्ट भूमिका है? कोई भी वर्ग PORTAIL_USERROLE तालिका का प्रतिनिधित्व करता है, इसलिए मुझे नहीं पता कि मेरी एचक्यूएल क्वेरी कैसे बनाएं।

+3

जब पास्कल Thivent इस सवाल का वह oinTable को JoinTable बदल संपादित और संयुक्त राष्ट्र एक पूरी तरह से वैध वाक्य पूंजीकृत इससे पहले अंत में 'धन्यवाद' को हटा दें। गंभीरता से क्या बात थी, इसने सवाल को कम पठनीय बनाया? –

उत्तर

18

यह करना चाहिए:

from Portailuser u join u.portailroles r where r.name=:roleName 
+0

बहुत बहुत धन्यवाद। मुझे नहीं लगता था कि हाइबरनेट इस तरह कई लोगों को प्रबंधित करता है। – Kiva

+0

बस लिनक्स यह नहीं है? – Gage

+0

धन्यवाद इससे मुझे भी मदद मिलती है –

2

आप @WhereJoinTable इस तरह उपयोग कर सकते हैं:

@JoinTable(name = "OFFICE_USER_POSITION", joinColumns = { 
     @JoinColumn(name = "user_id", referencedColumnName = "id")}, inverseJoinColumns = { 
     @JoinColumn(name = "POST_ID", referencedColumnName = "id")}) 
@WhereJoinTable(clause = "primary_flag='" + YES + "' and del_flag='" + DEL_FLAG_NORMAL + "'") 
संबंधित मुद्दे