मेरे पास इस प्रश्न के समान मामला है [एक लिंक] (How क्या मैं एचक्यूएल के साथ करता हूं, अनेक से अनेक?) मैं भूमिका के प्रत्येक परिवाद (इकाई 2) के लिए उपयोगकर्ताओं की संख्या (इकाई 1) रखना चाहता हूं। मैंने उपयोगकर्ता और भूमिका के बीच कई से कई संबंध परिभाषित किए।
मैं स्प्रिंग एमवीसी, हाइबरनेट, माईएसक्यूएल और जेपीए का उपयोग कर रहा हूं।
इकाई 1: उपयोगकर्ता
@Entity(name = "user")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String email;
@ManyToMany(mappedBy = "user")
private List<Role> role;
इकाई 2: भूमिका
@Entity
@Table(name = "role")
public class Role {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int ID;
private String libelle;
@ManyToMany
@JoinTable(
name = "user_role",
joinColumns = { @JoinColumn(name = "ID_role") },
inverseJoinColumns = { @JoinColumn(name = "id_user") }
)
private List<User> user;
जेपीए भंडार
@Repository
public interface UserRepository extends JpaRepository<User, Long> {
@Query(value = "select new map( count(u.id) as numberOfUsers,r.libelle as roleLibelle ) FROM user u join role r where r.ID =: ???? group by r.libelle")
List<Object> countByRoleList();
मैं यह पता लगाने की कोशिश कर रहा हूं कि मेरे द्वारा उल्लिखित प्रश्न में क्या =: आईडी प्रस्तावित है, मेरे मामले में होना चाहिए। बदले में "????" मैंने आईडी, आईडी, आईडी_रोल की कोशिश की। मुझे जो कुछ मिलता है वह त्रुटि है
"नामित पैरामीटर बाध्य नहीं है:"।
मैं इसे कैसे हल कर सकता हूं?
1 उत्तर
मुझे लगता है कि आपके पैरामीटर का प्रकार लंबा है। इसका नाम एबीसी है और यह एक आईडी को संदर्भित करता है। इन कदमों का अनुसरण करें:
अपने परम के सामने की जगह को हटा दें। तो आपके पास (=:abc) नहीं (=: abc) होगा।
आपकी क्वेरी बाहरी पैरामीटर पर निर्भर करती है, निर्दिष्ट परम के लिए @param एनोटेशन का उपयोग करती है। तो आपके पास होगा "..... countByRoleList(@Param("abc") long id);"
एक कोड उदाहरण
@Repository
public interface UserRepository extends JpaRepository<User,Long> {
@Query(value = "select new map( count(u.id) as numberOfUsers,r.libelle as roleLibelle ) FROM user u join role r where r.ID =:abc group by r.libelle")
List<Object> countByRoleList(@Param("abc") long id);
नोट: abc एक प्रदत्त परम है। यह एक HTML पृष्ठ, एक फ़ंक्शन से आ सकता है। आप इसे मैन्युअल रूप से भी प्रदान कर सकते हैं ...
संबंधित सवाल
नए सवाल
spring
स्प्रिंग फ्रेमवर्क जावा प्लेटफॉर्म पर एप्लिकेशन डेवलपमेंट के लिए एक ओपन सोर्स फ्रेमवर्क है। इसके मूल में घटक आधारित आर्किटेक्चर के लिए समृद्ध समर्थन है, और इसमें वर्तमान में बीस से अधिक उच्च एकीकृत मॉड्यूल हैं।