Saya memiliki insertOrUpdatemetode yang memasukkan Entityjika tidak ada atau memperbaruinya jika ada. Untuk mengaktifkan ini, saya harus findByIdAndForeignKey, jika dikembalikan nullmasukkan jika tidak kemudian perbarui. Masalahnya adalah bagaimana cara memeriksa apakah itu ada? Jadi saya mencoba getSingleResult. Tapi itu membuat pengecualian jika
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;
}
tapi getSingleResultmelempar Exception.
Terima kasih
getSingleResult()digunakan dalam situasi seperti: " Saya sangat yakin bahwa rekaman ini ada. Tembak saya jika tidak ". Saya tidak ingin mengujinullsetiap kali saya menggunakan metode ini karena saya yakin itu tidak akan mengembalikannya. Jika tidak, itu menyebabkan banyak pemrograman boilerplate dan defensif. Dan jika record benar-benar tidak ada (berlawanan dengan apa yang kita asumsikan), akan lebih baikNoResultExceptionjika dibandingkan denganNullPointerExceptionbeberapa baris kemudian. Tentu saja memiliki dua versigetSingleResult()akan luar biasa, tetapi jika saya harus mengambil satu ...