স্প্রিং ক্রুডরোপোসিটরির সাথে সংবেদনশীল প্রশ্ন


102

স্প্রিং ক্রডরেপোজিটরি ক্যোয়ারী সহ; আমি এর "নাম" বৈশিষ্ট্যযুক্ত "ডিভাইস টাইপ" সত্তা নির্বাচন করতে চাই। তবে নিম্নলিখিত প্রশ্নের সাথে সংবেদনশীল পদ্ধতিতে এনটাইটেল নির্বাচন করুন। আমি কীভাবে এটি সংবেদনশীল উপায়ে কেস করব। ধন্যবাদ।

public interface DeviceTypeRepository extends CrudRepository<DeviceType, Integer>, JpaSpecificationExecutor<DeviceType> {

    public Iterable<DeviceType> findByNameContaining(String name);

}  

16
আপনি চেষ্টা করেছেন public Iterable<DeviceType> findByNameIgnoreCaseContaining(String name);?
পিটার কেলার

যদি আপনি কোয়েরিতে আগ্রহী হন তবে দয়া করে এটি চেষ্টা করে দেখুন, LIKE <code> @Query (value = "ডিভাইস টাইপ থেকে dt হিসাবে dt নির্বাচন করুন যেখানে নিম্ন (: নাম) এর মতো"% "দেওয়ার দরকার নেই" ) সর্বজনীন পরিবেশনযোগ্য <ডিভাইস টাইপ> যে কোনও মেঠোডনমগোস এখানে (@ পরম (নাম) স্ট্রিং নাম); </code>
জাভা_ফায়ার_বিহীন

এটি আপনাকে সহায়তা করতে পারে, স্ট্যাকওভারফ্লো
শশাঙ্ক

উত্তর:


197

মন্তব্যটিতে ঠিক উল্লিখিত @ পিটার হিসাবে কেবল যুক্ত করুন IgnoreCase:

public interface DeviceTypeRepository 
    extends CrudRepository<DeviceType, Integer>, JpaSpecificationExecutor<DeviceType> {

    public Iterable<DeviceType> findByNameContainingIgnoreCase(String name);
}  

পদ্ধতি নামের ভিতরে সমস্ত সমর্থিত কীওয়ার্ডগুলির তালিকার জন্য ডকুমেন্টেশন দেখুন ।


ধন্যবাদ উত্তরের জন্য অনেক; অবশ্যই আমি সেই ডকুমেন্টেশনটি উল্লেখ করব। ধন্যবাদ। একটি মহান সময় আছে !
চান্না

3
এটা আমার জন্য কাজ করে। আমি জেপিএ ক্যোয়ারী ব্যবহার করছিলাম। ডকুমেন্টেশন অনুসারে, যেখানে UPPER (x.firstame) = UPPER (? 1) কাজ করেছিল।
সুনিথা

@ সুনিথা আপনি কি জানেন যে কোনওভাবেই আমরা এই আচরণটি সংশোধন করতে পারি, বলুন এটিকে আরও কম করুন? আমার ডিবি লোয়ার কেসের ভিত্তিতে ইনডেক্সিং করেছে
সুদীপ ভান্ডারী

@ সুদীপভাণ্ডারী: অবশ্যই পারবেন।
সুনিঠা

1
একাধিক বৈশিষ্ট্যের জন্য এর IgnoreCaseমতো পুনরাবৃত্তি করুন :List<Account> findByUsernameIgnoreCaseAndDomainIgnoreCase(String username, String domain);
তারাটার

11

নিম্নলিখিত স্প্রিং ডেটা মঙ্গো ক্যোয়ারী আমার জন্য কাজ করে। আমি Listপরিবর্তে ব্যবহার করতে পছন্দ করবIterator

public interface DeviceTypeRepository extends CrudRepository<DeviceType,Integer>, JpaSpecificationExecutor<DeviceType> {
    List<DeviceType> findByNameIgnoreCase(String name);
} 

1

আমার ক্ষেত্রে অ্যাডিং IgnoreCaseমোটেও কাজ করে না।

আমি দেখতে পেয়েছি যে নিয়মিত প্রকাশের জন্য বিকল্পগুলি সরবরাহ করাও সম্ভব:

@Query(value = "{'title': {$regex : ?0, $options: 'i'}}")
Foo findByTitleRegex(String regexString);

iবিকল্প ক্যোয়ারী কেস-অবশ করে তোলে।


1

যারা কাস্টম জেপিএ ক্যোয়ারী ব্যবহার করেন তাদের জন্য উচ্চতর কীওয়ার্ড এবং টুঅপারকেস সহায়তা করে। নিম্নলিখিত কোডটি আমার পক্ষে কাজ করে

 return  entityManager.createQuery("select q from "table " q  where upper(q.applicant)=:applicant")
    .setParameter("applicant",applicant.toUpperCase().trim()).getSingleResult();

1
'আপার (q.applicant)' ব্যবহার করার সময় যত্নশীল হন। পোস্টগ্রিসে এটি '.পিএসকিউলেক্সেপশন: এআরআরআর: ফাংশন আপার (বাইটিয়া) বিদ্যমান না থাকে' যখন q.applicant নাল হয়
অ্যাডওয়ার্টসভ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.