मेरे स्प्रिंग बूट एप्लिकेशन में मेरे पास Person.class नामक एक इकाई है, जिसमें शामिल है

long id;
String email;
String name;
String surname;
String address;

डीएओ कक्षा में, मेरे पास एक विधि है:

List<Person> findAllByEmail(String email);

जो डेटाबेस से पूछताछ करता है और व्यक्ति की सूची देता है।

मैं केवल कुछ विशेषताओं वाले व्यक्ति की सूची वापस करना चाहता हूं, उदाहरण के लिए:

long id;
String email;

पूरी वस्तु वापस किए बिना।

यह क्वेरी निष्पादित करने के बराबर होगा:

"select id, email from person where email = ?"

लेकिन मैं डीएओ में फ़ंक्शन क्वेरी को बनाए रखना चाहता हूं:

List<Person> findAllByEmail(String email);

प्रश्नों को हाथ से लिखे बिना।

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

2
user3476509 15 फरवरी 2021, 13:57

2 जवाब

सबसे बढ़िया उत्तर

आप JPA अनुमानों का उपयोग कर सकते हैं

  1. वांछित कॉलम के गेटर्स के साथ इंटरफेस बनाएं
interface WithIdAndEmail {
   long getId();
   String getEmail();
}
  1. उस इंटरफ़ेस का उपयोग विधि के रिटर्न प्रकार के रूप में करें
List<WithIdAndEmail> findAllByEmail(String email);
2
Nikolai Shevchenko 15 फरवरी 2021, 14:06

किसी विधि से एकाधिक मान लौटाना संभव नहीं है। आपकी कॉलिंग विधि में, जब लौटाए गए List<Person> पर पुनरावृति होती है, तो आपको List में से प्रत्येक Person से आवश्यक फ़ील्ड को स्थानीय चर में पढ़ना चाहिए और उनके साथ काम करना चाहिए।

2
MaxRumford 15 फरवरी 2021, 14:01