मेरे पास इस प्रश्न के समान मामला है [एक लिंक] (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();

मैं यह पता लगाने की कोशिश कर रहा हूं कि मेरे द्वारा उल्लिखित प्रश्न में क्या =: आईडी प्रस्तावित है, मेरे मामले में होना चाहिए। बदले में "????" मैंने आईडी, आईडी, आईडी_रोल की कोशिश की। मुझे जो कुछ मिलता है वह त्रुटि है

"नामित पैरामीटर बाध्य नहीं है:"।

मैं इसे कैसे हल कर सकता हूं?

0
CodIn 28 जुलाई 2019, 17:06

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 पृष्ठ, एक फ़ंक्शन से आ सकता है। आप इसे मैन्युअल रूप से भी प्रदान कर सकते हैं ...

0
Arnaud 28 जुलाई 2019, 19:50