मेरे पास एक ऐसा insertOrUpdate
तरीका है Entity
जब यह मौजूद नहीं है या अगर यह करता है तो इसे अपडेट करता है। इसे सक्षम करने के लिए, मुझे यह करना होगा findByIdAndForeignKey
, अगर यह null
अद्यतन नहीं है तो सम्मिलित करें। समस्या यह है कि अगर यह मौजूद है तो मैं कैसे जांच करूं? इसलिए मैंने कोशिश की getSingleResult
। लेकिन यह एक अपवाद फेंकता है अगर
public Profile findByUserNameAndPropertyName(String userName, String propertyName) {
String namedQuery = Profile.class.getSimpleName() + ".findByUserNameAndPropertyName";
Query query = entityManager.createNamedQuery(namedQuery);
query.setParameter("name", userName);
query.setParameter("propName", propertyName);
Object result = query.getSingleResult();
if (result == null) return null;
return (Profile) result;
}
लेकिन getSingleResult
फेंकता है Exception
।
धन्यवाद
getSingleResult()
जैसे स्थितियों में उपयोग किया जाता है: " मुझे पूरी तरह से यकीन है कि यह रिकॉर्ड मौजूद है। मुझे गोली मारो अगर यह नहीं है "। मैंnull
इस पद्धति का उपयोग करने के लिए हर बार परीक्षण नहीं करना चाहता क्योंकि मुझे यकीन है कि यह इसे वापस नहीं करेगा। अन्यथा यह बहुत सारे बॉयलरप्लेट और रक्षात्मक प्रोग्रामिंग का कारण बनता है। और अगर रिकॉर्ड वास्तव में मौजूद नहीं है (जैसा कि हमने मान लिया है उसके विपरीत), तो बाद में कुछ पंक्तियोंNoResultException
की तुलना में बेहतर हैNullPointerException
। निश्चित रूप से दो संस्करणgetSingleResult()
होने के कारण भयानक होगा, लेकिन अगर मुझे एक को चुनना है ...