2015-10-30 10 views
14

मैं संस्थाओं User और Testस्प्रिंग डाटा जेपीए: क्वेरी ManyToMany

@Entity 
public class User { 
    private Long id; 
    private String userName; 
} 

@Entity 
public class Test { 
    private Long id; 

    @ManyToMany 
    private Set<User> users; 
} 

मैं उपयोगकर्ता संस्था द्वारा सभी परीक्षणों प्राप्त कर सकते हैं:

public interface TestRepository extends JpaRepository<EventSettings, Long> { 
    List<Test> findAllByUsers(User user); 
} 

लेकिन जो क्वेरी मैं userName द्वारा सभी परीक्षणों को खोजने के लिए उपयोग कर सकते हैं ?

उत्तर

37

निम्न विधि हस्ताक्षर आप चाहते हैं करना चाहते हैं मिल जाएगा:

List<Test> findByUsers_UserName(String userName) 

यह वसंत डाटा जेपीए के property expression सुविधा का उपयोग कर रहा है। हस्ताक्षर Users_UserName का अनुवाद जेपीक्यूएल x.users.userName में किया जाएगा। ध्यान दें कि यह दिए गए उपयोगकर्ता नाम पर एक सटीक मिलान करेगा।

+1

जेपीक्यूएल (क्वेरी एनोटेशन में) में इसे कैसे बनाया जाए? –

+0

इसे शामिल होने का उपयोग करके हासिल किया जा सकता है। मेरा जवाब देखें – ArslanAnjum

+0

बहुत बढ़िया समाधान, बहुत बहुत धन्यवाद! थोड़ी देर के लिए खोज रहे थे। – dave0688

0

अन्य उत्तर दिखाता है कि फ़ंक्शन नामकरण तकनीक का उपयोग करके वांछित कार्यक्षमता कैसे प्राप्त करें। हम @Query एनोटेशन का उपयोग करके निम्न कार्यक्षमता प्राप्त कर सकते हैं:

@Query("select t from Test t join User u where u.username = :username") 
List<Test> findAllByUsername(@Param("username")String username); 
+0

लेकिन क्यों? –

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