Tôi có một insertOrUpdatephương thức chèn vào Entitykhi nó không tồn tại hoặc cập nhật nó nếu có. Để kích hoạt điều này, tôi phải findByIdAndForeignKey, nếu nó trả về nullchèn nếu không thì cập nhật. Vấn đề là làm thế nào để tôi kiểm tra nếu nó tồn tại? Vì vậy, tôi đã cố gắng getSingleResult. Nhưng nó ném một ngoại lệ nếu
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;
}
nhưng getSingleResultném một Exception.
Cảm ơn
getSingleResult()được sử dụng trong các tình huống như: " Tôi hoàn toàn chắc chắn rằng hồ sơ này tồn tại. Hãy bắn tôi nếu không ". Tôi không muốn kiểm tranullmỗi lần tôi sử dụng phương pháp này vì tôi chắc chắn rằng nó sẽ không trả lại. Nếu không, nó gây ra rất nhiều chương trình nồi hơi và phòng thủ. Và nếu bản ghi thực sự không tồn tại (ngược lại với những gì chúng ta đã giả định), sẽ tốt hơn nhiềuNoResultExceptionso vớiNullPointerExceptionvài dòng sau này. Tất nhiên có hai phiên bảngetSingleResult()sẽ rất tuyệt, nhưng nếu tôi phải chọn một ...