Tôi có một insertOrUpdate
phương thức chèn vào Entity
khi 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ề null
chè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 getSingleResult
né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 tranull
mỗ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ềuNoResultException
so vớiNullPointerException
và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 ...