वहाँ से स्प्रिंग डाटा जेपीए विधि save
का उपयोग कर केवल कुछ क्षेत्रों एक इकाई वस्तु की अद्यतन करने के लिए कोई तरीका है?जेपीए: अद्यतन केवल विशिष्ट क्षेत्रों
@Entity
public class User {
@Id
private Long id;
@NotNull
private String login;
@Id
private String name;
// getter/setter
// ...
}
अपने CRUD रेपो के साथ
:
उदाहरण के लिए मैं इस तरह एक जेपीए इकाई है वसंत MVC में
public interface UserRepository extends CrudRepository<User, Long> { }
मैं एक नियंत्रक कि अद्यतन के लिए एक User
वस्तु प्राप्त है यह :
@RequestMapping(value = "/rest/user", method = RequestMethod.PUT, produces = MediaType.APPLICATION_JSON_VALUE)
@ResponseBody
public ResponseEntity<?> updateUser(@RequestBody User user) {
// Assuming that user have its id and it is already stored in the database,
// and user.login is null since I don't want to change it,
// while user.name have the new value
// I would update only its name while the login value should keep the value
// in the database
userRepository.save(user);
// ...
}
मुझे पता है कि मैं findOne
का उपयोग कर, फिर उसके नाम बदल सकते हैं और save
उपयोग करके उसे अपडेट उपयोगकर्ता को लोड कर सकता है ... लेकिन यह बहुत कष्टप्रद परिवर्तन प्रत्येक मान हो सकता है अगर मैं 100 क्षेत्रों है और मैं उनमें से 50 को अपडेट करना चाहते ..
वहाँ है ऑब्जेक्ट "सहेजते समय" जैसे कुछ शून्य मानों को छोड़ने का कोई तरीका नहीं है "?
कोई नहीं है। ऑब्जेक्ट को पुनर्प्राप्त करने, फ़ील्ड को अपडेट करने और इसे स्टोर करने का एकमात्र सही तरीका है और यह गतिशील हो सकता है। अगर आप कुछ और चाहते हैं तो आपको इसके लिए एसक्यूएल लिखना होगा और इसे स्वयं करना होगा। लेकिन मान लीजिए कि 'उपयोगकर्ता' में केवल उन फ़ील्ड के लिए 'शून्य' है, जिन्हें आप सहेजना नहीं चाहते हैं, आप जो भी कर सकते हैं, वह दूसरी तरफ है, आने वाले 'उपयोगकर्ता' का उपयोग करें और उन फ़ील्ड को अपडेट करें जिन्हें आप जानते हैं, बदल नहीं गए हैं, फिर अपडेट करें उस। –
क्या ऐसा कोई कारण है जिसके लिए कोई ऑब्जेक्ट अपडेट करने वाले शून्य मानों को छोड़ना बेहतर नहीं है? – Andrea
क्या छोड़ना है यह जानने का कोई भरोसेमंद तरीका नहीं है, नल फ़ील्ड के लिए वैध विकल्प हो सकता है, तो क्या? आप शायद 'एंटीलिटी लिस्टर' या उस तरह कुछ के साथ जगह में कुछ भी कर सकते हैं, लेकिन मैं इसके खिलाफ दृढ़ता से अनुशंसा करता हूं क्योंकि इससे शायद हल होने की तुलना में अधिक समस्याएं हो सकती हैं। –