2010-09-16 19 views
25

मैंने सोचा कि मुझे JPQL में उपयोग करने का तरीका पता है लेकिन स्पष्ट रूप से नहीं। क्या कोई मेरी मदद कर सकता है?जेपीए: जेपीक्यूएल में शामिल हों

select b.fname, b.lname from Users b JOIN Groups c where c.groupName = :groupName 

यह मैं अपवाद दे

org.eclipse.persistence.exceptions.JPQLException 
Exception Description: Syntax error parsing the query 
Internal Exception: org.eclipse.persistence.internal.libraries.antlr.runtime.EarlyExitException 

UsersGroups के साथ एक OneToMany रिश्ता है।

Users.java

@Entity 
public class Users implements Serializable{ 

    @OneToMany(mappedBy="user", cascade=CascadeType.ALL) 
    List<Groups> groups = null; 
} 

Groups.java

@Entity 
public class Groups implements Serializable { 
    @ManyToOne 
    @JoinColumn(name="USERID") 
    private Users user; 
} 

मेरे दूसरे प्रश्न करते है का कहना है कि इस प्रश्न के लिए एक अनूठा परिणाम लौटने के लिए, तो अगर मैं

String temp = (String) em.createNamedQuery("***") 
    .setParameter("groupName", groupName) 
    .getSingleResult(); 

*** ऊपर क्वेरी नाम का प्रतिनिधित्व करती हैं । तो क्या fname और lnametemp के अंदर एक साथ सम्मिलित है या मुझे List<String> वापस मिल गया है?

उत्तर

43

शामिल हों पर एक-से-कई JPQL में संबंध इस प्रकार दिखता है:

select b.fname, b.lname from Users b JOIN b.groups c where c.groupName = :groupName 

जब कई गुण select खंड में निर्दिष्ट कर रहे हैं, परिणाम Object[] के रूप में दिया जाता है:

Object[] temp = (Object[]) em.createNamedQuery("...") 
    .setParameter("groupName", groupName) 
    .getSingleResult(); 
String fname = (String) temp[0]; 
String lname = (String) temp[1]; 

वैसे , आपकी संस्थाओं को बहुवचन रूप में क्यों नामित किया गया है, यह भ्रमित है। आप बहुवचन में तालिका नाम करना चाहते हैं, तो आप इकाई स्पष्ट रूप से के लिए तालिका नाम निर्दिष्ट करने के @Table उपयोग कर सकते हैं, तो यह आरक्षित शब्दों के साथ हस्तक्षेप नहीं करता है:

@Entity @Table(name = "Users")  
public class User implements Serializable { ... } 
+1

क्या होगा अगर बजाय क्षेत्रों का चयन करने की आप एक इकाई का चयन किया + किसी अन्य इकाई से एक क्षेत्र। कुछ 'चयन बी, सी। नाम ...' की तरह कुछ। फिर ऑब्जेक्ट [] में पहला ऑब्जेक्ट बी या पूरी इकाई का क्षेत्र होगा? – Ced

संबंधित मुद्दे