আমার কাছে এমন একটি 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()থাকা দুর্দান্ত হবে তবে আমার যদি