java - पसंद के साथ वसंत जेपीए @Query




jquery sql (6)

विधि नामों से क्वेरी निर्माण का उपयोग करके, तालिका 4 जांचें जहां वे कुछ कीवर्ड समझाते हैं।

  1. पसंद का उपयोग: चुनें ... जैसे: उपयोगकर्ता नाम

    List<User> findByUsernameLike(String username);
    
  2. प्रारंभ करने के साथ: चुनें ... जैसे: उपयोगकर्ता नाम%

    List<User> findByUsernameStartingWith(String username);
    
  3. समापन के साथ: चुनें ... जैसे%: उपयोगकर्ता नाम

    List<User> findByUsernameEndingWith(String username);
    
  4. युक्त: चयन करें ...% की तरह: उपयोगकर्ता नाम%

    List<User> findByUsernameContaining(String username);
    

ध्यान दें कि जो उत्तर आप खोज रहे हैं वह नंबर 4 है । आपको @Query का उपयोग करने की आवश्यकता नहीं है

मैं CrudRepository में एक विधि बनाने की कोशिश कर रहा हूं जो मुझे उन उपयोगकर्ताओं की सूची दे पाएगा, जिनके उपयोगकर्ता नाम इनपुट पैरामीटर की तरह हैं (न केवल आरंभ करें, बल्कि इसमें शामिल हैं)। मैंने विधि "findUserByUsernameLike(@Param("username") String username)" का उपयोग करने की कोशिश की "findUserByUsernameLike(@Param("username") String username)" लेकिन जैसा कि इसे स्प्रिंग दस्तावेज़ में बताया गया है, यह विधि " where user.username like ?1 " के बराबर है। यह मेरे लिए अच्छा नहीं है, क्योंकि मैंने पहले से ही कहा है कि मैं उन सभी उपयोगकर्ताओं को प्राप्त करने का प्रयास कर रहा हूं जिनके उपयोगकर्ता नाम में ...

मैंने विधि के लिए एक प्रश्न लिखा लेकिन यह भी तैनात नहीं करता है।

@Repository
public interface UserRepository extends CrudRepository<User, Long> {

@Query("select u from user u where u.username like '%username%'")
List<User> findUserByUsernameLike(@Param("username") String username);
}

क्या कोई मेरी इसके साथ मदद कर सकता है?


आपके मामले के लिए, आप सीधे जेपीए विधियों का उपयोग कर सकते हैं। वह बोले की तरह है:

युक्त: चयन करें ...% की तरह: उपयोगकर्ता नाम%

List<User> findByUsernameContainingIgnoreCase(String username);

यहां, IgnoreCase मामले को अनदेखा करने के साथ आइटम खोजने में आपकी सहायता करेगा।

यहां कुछ संबंधित विधियां दी गई हैं:

  1. findByFirstnameLike पसंद है

    ... जहां x.firstname पसंद है? 1

  2. शुरू करने के साथ findByFirstnameStartingWith

    ... जहां x.firstname पसंद है? 1 (संलग्न% के साथ पैरामीटर बाध्य)

  3. समाप्त करने के साथ findByFirstnameEndingWith पहले findByFirstnameEndingWith

    ... जहां x.firstname पसंद है? 1 (पैरापेड% के साथ पैरामीटर)

  4. findByFirstnameContaining युक्त

    ... जहां x.firstname पसंद है? 1 (पैरामीटर बाध्य% में लपेटा)

अधिक जानकारी, इस लिंक और इस लिंक को देखें

आशा है कि यह आपकी मदद करेगा :)


निम्नलिखित का उपयोग करना आसान है (कोई आवश्यकता नहीं CONCAT या ||):

@Query("from Service s where s.category.typeAsString like :parent%")
List<Service> findAll(@Param("parent") String parent);

में प्रलेखित: http://docs.spring.io/spring-data/jpa/docs/current/reference/html


निम्नलिखित दृष्टिकोण का उपयोग करने का प्रयास करें (यह मेरे लिए काम करता है):

@Query("SELECT u.username FROM User u WHERE u.username LIKE CONCAT('%',:username,'%')")
List<String> findUsersWithPartOfName(@Param("username") String username);

नोटिस: जेपीक्यूएल में तालिका का नाम पूंजी पत्र से शुरू होना चाहिए।


@Query("select b.equipSealRegisterId from EquipSealRegister b where b.sealName like %?1% and b.deleteFlag = '0'" )
    List<String>findBySeal(String sealname);

मैंने इस कोड को आजमाया है और यह काम करता है।


@Query("select u from user u where u.username LIKE :username")
List<User> findUserByUsernameLike(@Param("username") String username);




jpa